Показать сообщение отдельно
Старый 16.05.2011, 20:31   #1
ssanek
AnyKey`щик
 
Регистрация: 31.08.2010
Сообщений: 7
Написано одно полезное сообщение
(для 2 участников)
Смех Парни помогите.

Короче пишу 3d движок.Вот версия с кометами...В чём проблема а проблема в даже не в 3D а в 2D что меня воще выводит. короче если линия сильно выходит за одну сторону экрана телефон автоматом выведит её с другой стороны...Чтобы это устранить я придумал вот это
if ((x>camera.h) or (x<0) or (x1>camera.h) or (x1<0)) and(x-x1<>0) then
begin
xf:=x;
yf:=y;
x1f:=x1;
y1f:=y1;
a:=(yf-y1f)/(xf-x1f);
b:=y1f-x1f*a;
if x<0 then begin y:=trunc(b); x:=0; end else
if x>camera.h then begin y:=trunc(camera.h*a+b); x:=camera.h; end;
if x1>camera.h then begin y1:=trunc(camera.h*a+b); x1:=camera.h; end else
if x1<0 then begin y1:=trunc(b);x1:=0; end;
end;

if ((y>camera.w) or (y<0) or (y1>camera.w) or (y1<0)) and (y-y1<>0) then
begin
xf:=y;
yf:=x;
x1f:=y1;
y1f:=x1;
a:=(yf-y1f)/(xf-x1f);
b:=y1f-x1f*a;
if y<0 then begin x:=trunc(b); y:=0; end else
if y>camera.w then begin x:=trunc(camera.w*a+b); y:=camera.w; end;
if y1>camera.w then begin x1:=trunc(camera.w*a+b); y1:=camera.w; end else
if y1<0 then begin x1:=trunc(b);y1:=0; end;
end;
но это не работает я уже заколебался а закрывать проэт не хочу... короче задача проста есть две 2D точки образующии отрезок надо чтобы эти отрезки отсекались краями экрана и получались новые 2D точки. короче помогите кому не сложно.заодно движок потестите,после того как эту проблему устраню оптимизирую его он сейчас нормально конечно работает но может раза 2-3 быстрее.
Зарание спасибо.
Вложения
Тип файла: rar 3D049.rar (25.8 Кб, 732 просмотров)

Последний раз редактировалось ssanek, 16.05.2011 в 20:33. Причина: Файл добавить забыл)))
(Offline)
 
Ответить с цитированием