|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Politov 2:5015/176.18 07 Mar 2002 06:39:28 To : Alexander 'Fox M ' Arkhireyev Subject : Re: Hебольшая задача по планиметрии -------------------------------------------------------------------------------- До меня дошли слухи, что *03.03.02* *20:29:11* пролетало сообщение от Alexander к *All* про *"Hебольшая задача по планиметрии"*. И я решил вмешаться. A'M'A> Есть задача: даны пять пар чисел (координат), однозначно [...] A'M'A> Заранее всем 10х! имхо тебе поможет параметрическое задание прамой, проходящей через две точки. x=x1+(x2-x1)t } y=y1+(y2-y1)t } ну а так как отрезка у нас два, то имеем x1+(x2-x1)t=x3+(x4-x3)u} y1+(y2-y1)t=y3+(y4-y3)u} или (x2-x1)t+(x3-x4)u=x3-x1} (y2-y1)t+(y3-y4)u=y3-y1} Остается только решить систему методом Крамера. У этого способа есть плюсы которые помогут тебе с треугольником. 1) если система не имеет решения, то прямые параллельны. 2) точка принадлежит отрезку, если соответствующий параметр >=0, и <=1. Hу а для труегольника тебе надо просто проанализировать количество точек пересечения отрезка со сторонами, и выводы должны получится следующие. 1)пересекает одну сторону 2)пересекает две стороны 3)а это как? 0)если один из концов отрезка лежит в треугольнике то и весь отрезок лежит в нем, в противном случае отрезок находится вне треугольника. Вот бонусом идет функция нахождения точки пересечения двух прямых, надеюсь ты сам с ней разберешься. function getcrs(x1,y1,x2,y2,x3,y3,x4,y4: float; var x,y,t,u: float): boolean; var a,b,c,d,e,f,q: float; begin a:= x2-x1; b:= x3-x4; c:= x3-x1; d:= y2-y1; e:= y3-y4; f:= y3-y1; q:= a*e-b*d; getcrs:= false; if abs(q)<eps then exit; t:= (c*e-b*f)/q; u:= (a*f-c*d)/q; x:= x1+(x2-x1)*t; y:= y1+(y2-y1)*t; getcrs:= true; end; Искренне Ваш Sergey Politov --- WP/95 Rus 1.78 Релиз 1 Reg. * Origin: Heavy Metal is the Law. (2:5015/176.18) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/399144080713.html, оценка из 5, голосов 10
|