forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Необходимо найти координаты точки (http://forum.boolean.name/showthread.php?t=15598)

pax 05.10.2011 03:02

Необходимо найти координаты точки
 
Вобщем задачка такая:



Известны координаты точек 1-3 и радиус окружности. Надо найти координаты точки 4.

Есть какие-либо соображения на этот счет?

Платон Александрович 05.10.2011 10:37

Ответ: Необходимо найти координаты точки
 
Можно взять нормали векторов (1 и 3) и (2 и 3), по ним найти точки касания (противоположные) линий с окружностью (центр + нормаль * радиус). Из полученых отрезков взять лучи и найти точку их пересечения, т.е. точку 4 :)

pax 05.10.2011 10:44

Ответ: Необходимо найти координаты точки
 
Самому такой вариант решения пришел на ум, а другие варианты решения могут быть?

SBJoker 05.10.2011 10:45

Ответ: Необходимо найти координаты точки
 
По формулам найти касательные к окружности, потом найти их точку пересечения.

pax 05.10.2011 10:46

Ответ: Необходимо найти координаты точки
 
Цитата:

Сообщение от SBJoker (Сообщение 204663)
По формулам найти касательные к окружности, потом найти их точку пересечения.

А по каким формулам? Есть какие-нибудь ссылки?

SBJoker 05.10.2011 10:57

Ответ: Необходимо найти координаты точки
 
Гуглим "касательная к окружности уравнение" и "пересечение прямых уравнение"

Касательная http://www.bymath.net/studyguide/angeo/sec/angeo3.htm
Пересечение прямых http://wiki.mirgames.ru/%D0%BF%D0%B5...BC%D1%8B%D1%85

pax 05.10.2011 12:01

Ответ: Необходимо найти координаты точки
 
По первой ссылке необходимо иметь точку на окружности для вычисления уравнения касательной, которая не известна.

dsd 05.10.2011 16:35

Ответ: Необходимо найти координаты точки
 
Вообще из одной точки к окружности можно провести только две касательные.
Из теоремы Пифагора можно легко найти катет, который не радиус. Уравнение от точки 1 к точке три легко найти. Далее поворотом осей получаем уравнение касательной. Тоже для точки 2. Будет два уравнение пересечение точка четыре.

pax 05.10.2011 16:52

Ответ: Необходимо найти координаты точки
 
Трудно понимается с поворотом осей, но как получить вектора, повернув их на определенный угол я понимаю, спасибо.

moka 05.10.2011 19:05

Ответ: Необходимо найти координаты точки
 


Сперва нужно провезти касательные от точек, при этом они должны быть на внешних сторонах окружности.
Точек пересечения может быть ни одной, может быть одна, а может быть и две.
Чтобы определить как провезти касательные, тут не так и просто, т.к. нужно учесть много условий для разных сценариев.

Должна быть весьма простая формула, но за недостатком мат. знаний, я не могу её разработать.

RegIon 05.10.2011 19:07

Ответ: Необходимо найти координаты точки
 
вопрос:как попиксельно нарисовать линию если заданы начальные и конечные координаты,и можно это сделатбез деления(язык:Си),а то либо много делений выходит,либо при отрисовке всякие косяки

pax 05.10.2011 19:18

Ответ: Необходимо найти координаты точки
 
Цитата:

Сообщение от Платон Александрович (Сообщение 204660)
Можно взять нормали векторов (1 и 3) и (2 и 3), по ним найти точки касания (противоположные) линий с окружностью (центр + нормаль * радиус). Из полученых отрезков взять лучи и найти точку их пересечения, т.е. точку 4 :)

Этот вариант отпадает, т.к. Нормали не совпадают по направлению с катетом прямоугольного треугольника, образуемым вектором 1-3, радиусом и касательной.

pax 05.10.2011 19:20

Ответ: Необходимо найти координаты точки
 
Цитата:

Сообщение от Костян (Сообщение 204721)
вопрос:как попиксельно нарисовать линию если заданы начальные и конечные координаты,и можно это сделатбез деления(язык:Си),а то либо много делений выходит,либо при отрисовке всякие косяки

Алгоритм Брезенхэма

Алгоритм Ву

pax 05.10.2011 20:21

Ответ: Необходимо найти координаты точки
 
В общем теорема Пифагора тут тоже пока не нужна. Но прямоугольный треугольник помог: Зная отношение катета к гипотенузе - это синус угла, на который надо повернуть например вектор 1-3, чтобы получить вектора касательных, потом надо выбрать нужные вектора и найти точку пересечения. Но возможно мне понадобятся точки касания, поэтому и теорема Пифагора пригодится :)

.Squid 05.10.2011 23:10

Ответ: Необходимо найти координаты точки
 
Цитата:

Сообщение от pax (Сообщение 204725)
Этот вариант отпадает, т.к. Нормали не совпадают по направлению с катетом прямоугольного треугольника, образуемым вектором 1-3, радиусом и касательной.

Ты же можешь найти угол (гипотенуза и катет-радиус известны) и повернуть нормаль - умножить на матрицу поворота


Часовой пояс GMT +4, время: 16:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot