Показать сообщение отдельно

  #11866  
Старый 16.08.2009, 21:47
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

Цитата:
Сообщение от mailbrush  
Такая проблема с GD в Delphi.
Вобщем есть точка, скажем, X100 Y150.
Есть другая точка, X200 Y220.
Надо провести линию (imageline) между этими точками, НО чтобы линия расстянулась, т.е. вместо того, чтобы быть в точке 100x150 была чуть-чуть выше по X и по Y, и вместо 200х220 была чуть-чуть ниже по X, Y, но чтобы она проходила между этими точками(100x150, 200x220)
Векторы =))

AB - вектор с точками A(100; 150), B(200; 220)

смещение вектора от 0,0 будет min(A,B) = (100; 150)

приводим вектор в локальные координаты abs(A-B) => A'(0 ; 0) B'(100; 70)

находим зависимость x от y
k = B'(x) / B'(y) = ~1,43

теперь мы можем спокойно взять любую точку от вектора... скажем 10 пикселей по y от точки B => B(y) + 10

мировые координаты
B(y) = смещение(y) + B'(y) + 10 = B(y) + 10 = 230
B(x) = смещение(x) +(B'(y) + 10)*k = 100 + 80*1.43 = ~214,4

задаём смещение от краёв и проводим линию =)

Последний раз редактировалось FireFenix; 16.08.2009 в 21:51..
 
Ответить с цитированием