![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
есть 2 вектора: вектор стены и вектор движения )с конечными и начальными точками оба)
как мне проверить пересекаются они или нет? и найти эту точку пересечения. Хотя точку мне не нужно достаточно просто проверки на пересечение. можете мне написать кусок кода а то пример во от суда у меня че-то не запахали: http://www.tonypa.pri.ee/vectors/tut05.html
__________________
To beer or no to beer? That is the question... |
|
|||||
|
[+3 13.02.08]
Регистрация: Apr 2006
Сообщений: 421
|
Эээ, вектора - то не могут пересекаться если неизвестна точка приложения. Вам наверное коллизию надо определить, это определять можно различными способами, в зависимости от контекста. Так что опишите конкретно как у вас что выглядит.
Самый простой способ - это провести отрезок из последней точки центра обьекта в предпоследнюю и определить пересекаются ли два отрезка: стена и вышеназванный. |
|
|||||
|
дадада я это и мел в виду!
тоесть по факту у меня 2 отрезка стена и путь обьекта за единицу времени. как мне проверить пересекаются они или нет? примерчик бы функции с коментами посмотреть я б сразу вьехал куда копать. Я уже написал функцию, которая отскок вычисляет, а вот проверку на пересечение че-то пока не особо получается.
__________________
To beer or no to beer? That is the question... |
|
|||||
|
ветеран форума
|
у отрезков есть начало и конец. Получаем по этим данным уранения прямых вида y=kx+b , приравниваем kx1 + b1 = kx2+b2 , находим x пересечения, проверяем, находится ли этот x между началом и концом каждого из отрезков
P. S. Очень советую Джоба Макара "Секреты разработки игр во Flash", там целая глава посвещена этому всему.
__________________
4am is time to rock |
|
|||||
|
|
|
|||||
|
если бы у меня в далекой школе небыло трояка по алгебре/геометрии я бы с удовольствием решил эту систему уравнений =))
2 silin Спасибо, ознакомлюсь щас
__________________
To beer or no to beer? That is the question... |
|
|||||
|
Регистрация: Sep 2006
Сообщений: 32
|
для ленивых
![]() package {
import flash.display.Sprite;
import flash.geom.Point;
import flash.events.Event;
public class test extends Sprite
{
public function test()
{
this.addEventListener(Event.ENTER_FRAME,enterFrame);
}
public function enterFrame(e:Event):void
{
var p0:Point = new Point(40,200);
var p1:Point = new Point(mouseX,mouseY);
var A:Point = new Point(100,100);
var B:Point = new Point(200,200);
graphics.clear();
graphics.lineStyle(1,0xff0000);
var p:Point = lineline(p0,p1,A,B);
graphics.moveTo(p0.x,p0.y);
graphics.lineTo(p1.x,p1.y);
graphics.moveTo(A.x,A.y);
graphics.lineTo(B.x,B.y);
graphics.drawCircle(p.x,p.y,5);
}
public function lineline(p0:Point,p1:Point,A:Point,B:Point):Point
{
var x:Array = kramer2([(p1.x-p0.x),-(B.x-A.x),p1.y-p0.y,-(B.y-A.y)],[-p0.x+A.x,-p0.y+A.y]);
if(x[0]<0||x[0]>1||x[1]<0||x[1]>1)graphics.lineStyle(1);
return new Point(p0.x+(p1.x-p0.x)*x[0],p0.y+(p1.y-p0.y)*x[0]);
}
private function kramer2(A:Array, B:Array):Array {
var o:Number = A[0]*A[3]-A[1]*A[2];
return [(B[0]*A[3]-A[1]*B[1])/o, (A[0]*B[1]-B[0]*A[2])/o];
}
}
}
__________________
http://www.free-lance.ru/users/goarcade |
|
|||||
|
стервочка (я мужик)
|
ну если у вас трояк, то вам надо либо подтянуть знания, либо нанять математика-физика
потому что ваши задачки напичканы такой билебердой ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|