Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
нахождение длины перпендикуляра
Математика огого как давно была. Ничего уже не понимаю.
Нужна функция нахождения длины перпендикуляра. Например три точки A, B, C, o. Все координаты (кроме o) известны. Нужно узнать длину отрезка oC если о лежит на отрезке AB, oC перпендикулярен AB, Аo и oB могут быть не равной длины.
Сам не пробывал. Но думал об этом. Хотел искать через 2 окружности. Зашёл в тупик. Ъз как найти точки пересечения окружностей.
итак..
Отредактировано Печатник lvl1, 15.04.2010 в 11:02. |
15.04.2010, 01:08 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JaBeN_Симфер
offline
Опыт:
20,050Активность: |
строй прямоугольный треугольник АСо, по которому можно найти катет Со. у самого математика была очень давно, завтра если найду блокнотик с формулами, то выложу способ решения |
15.04.2010, 02:12 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Windrunner
Верь мне!
offline
Опыт:
4,565Активность: |
Тебе ведь известна точка С? если да то строишь прямоугольный треугольник и находишь длинну СВ по формуле (xC-xB)^2 + (yC - yB) ^2 и из всего этого корень(не помню как находится) патом также находишь BO и по этой же формуле находишь CO только зачем тебе это? Хотя...В общем если тебе известны координаты O тогда делай проще (xC - xO) ^2 + (yC - yO) ^2 и корень из всего етого. ^2 это значит в квадрате=) |
15.04.2010, 07:20 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
McKenzza
Qt
offline
Опыт:
4,054Активность: |
можно найти координаты центра АВ (если конечно АО=ОВ), координаты О((Xb+Xa)/2; (Yb+Ya)/2) Xo=(Xb+Xa)/2 Yo=(Yb-Ya)/2 ну и собственно: OC = sqrt((Xc-Xo)(Xc-Xo)+(Yc-Yo)(Yc-Yo)) Отредактировано F1shkA, 15.04.2010 в 07:41. |
15.04.2010, 07:34 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
krosaf4eg
offline
Опыт:
1,859Активность: |
СО=АС*sin а где а - угол между АС и АВ еще через уравнения прямых можно только точно не помню как |
15.04.2010, 09:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
Обновил первый пост.
Как находить расстояние между точками я знаю. Нужно найти координаты oC. krosaf4eg:
Как это понимать? Длину АС на синус угла между АС и АВ? |
15.04.2010, 11:10 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
krosaf4eg
offline
Опыт:
1,859Активность: |
Да. зная длину, можно найти координаты о через полярки, однако сложновато получается, может кто-нибудь подскажет способ менее трудоемкий (давно эти темы были, на первом курсе :) ) |
15.04.2010, 11:54 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
McKenzza
Qt
offline
Опыт:
4,054Активность: |
хз.. можно попробовать через площадь..
...........|xa ya 1| S(abc)=|xb yb 1|=1/2[xa(yb-yc)-xb(ya-yb)+xc(ya-yc)] ...........|xc yc 1| потом таким же образом найти сумму (ACO) и (COB), т.е. ...........|xa ya 1| S(aco)=|xc yc 1|=... детерминант короче посчитать тут надо (выразить) ...........|xo yo 1| ...........|xb yb 1| S(cob)=|xc yc 1|=... ...........|xo yo 1| затем приравнять и выразить xo и yo.. п.с.у меня чего-то не вышло.. |
15.04.2010, 12:10 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Windrunner
Верь мне!
offline
Опыт:
4,565Активность: |
А мой чем не хорош то?=) |
15.04.2010, 14:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
F1shkA, Воще обракадабры какието)
Windrunner, как я найду точку О ты не описал. |
15.04.2010, 14:40 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
ну через площадь вполне можно:
S=(AB*CO)/2=sqr(p*(p-AB)*(p-BC)*(p-AC)) слева одна формула получения площади (половина произведния стороны на высоту, проведенную к ней), справа формула площади треугольника через полупериметр, приравнивем и получаем: CO = (2*sqr(p*(p-AB)*(p-BC)*(p-AC)))/AB Точку О этот способ вроде не даст, но длину высоты найдеш) |
15.04.2010, 16:28 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
JimALIEN:
Гда взять р? (AB+BC+AC)/2? Вместо AB например его длину подставлять? |
15.04.2010, 17:00 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
ну да
|
15.04.2010, 17:00 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
Спасибо буду тестить)
|
15.04.2010, 17:50 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
McKenzza
Qt
offline
Опыт:
4,054Активность: |
Это матрицы :D >_< |
15.04.2010, 18:09 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Печатник lvl1
Typo
offline
Опыт:
4,157Активность: |
Ну и?
Если искать этим методом выйдет меньше действий? |
15.04.2010, 18:23 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
McKenzza
Qt
offline
Опыт:
4,054Активность: |
Печатник lvl1, думаю, что нет)) просто это уже окольными путями я пошел, т.к. другого метода не нашел.. О.о Хотя были идеи через длины.
F1shkA добавил:
этот получился? |
15.04.2010, 18:44 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
там вроде над еще модулей добавить, т.к. может получица что под корнем будет отрицательное число, т.е.:
Код:
аддед: фигню написал, не обращайте внимания) Отредактировано JimALIEN, 15.04.2010 в 19:12. |
15.04.2010, 18:57 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Печатник lvl1,
(угол)САо = Atan2(Cy-Ay,Cx-Ax) - Atan2(By-Ay,Bx-Ax) (отрезок)AC = DistanceBetweenPoints(A,C) (отрезок)Co = AC*Sin(CAo) //<--- Нужный отрезок (угол)ACo = 1.5708 - CAo (угол)х = Atan2(Ay-Cy,Ax-Cx) + ACo //<--- Нужный угол (в радианах) (угол)х1 = х*57.29582 //<--- Нужный угол (в градусах) Точку (о) нужно будет отложить полярными координатами от точки (С), используя длинну отрезка Со и угол х1 (ну или угол х, если угол будешь считать в радианах). При редактировании учти, что все углы в радианах!!! Отредактировано silumin, 16.04.2010 в 03:17. |
15.04.2010, 22:45 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
через полярные координаты это делается даже на гуи... |
15.04.2010, 22:55 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|