Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.13;
Скачать: CL | DM;

Вниз

Кривая по трем точкам.   Найти похожие ветки 

 
@!!ex ©   (2007-04-16 19:36) [0]

Нужно построить кривую по трем точкам.
1 и 3 - концы кривой. 2 - задет кривизу.
Особых пожеланий нет.
Рассматривал два варианта:
парабола. Но частный случаев и поворотов оказалось так много, что пришлось от этой идеи отказаться.
безье. сейчас ее юзаю. Но проблема реально в том, что центральная точка задает кривую, но при этом не принадлежит этой кривой..
есть идеи?


 
ArtemESC ©   (2007-04-16 19:39) [1]

Безье для трех точек:)


 
ferr ©   (2007-04-16 19:39) [2]

бррр... окружность это называется ;-)


 
Virgo_Style ©   (2007-04-16 19:42) [3]

@!!ex ©   (16.04.07 19:36)
парабола. Но частный случаев и поворотов оказалось так много, что пришлось от этой идеи отказаться.


не понял...


 
@!!ex ©   (2007-04-16 19:43) [4]

> [1] ArtemESC ©   (16.04.07 19:39)

Безье для трех точек? Не понял...


> [2] ferr ©   (16.04.07 19:39)

Окружность не получилась... Может в решении уравнений накосячил, а может и нет.....


 
@!!ex ©   (2007-04-16 19:43) [5]

> [3] Virgo_Style ©   (16.04.07 19:42)

Надо учитывать положение точек при отрисовки и рещении уравнения.


 
Virgo_Style ©   (2007-04-16 19:51) [6]

@!!ex ©   (16.04.07 19:43) [5]
факт. надо.


 
Чапаев ©   (2007-04-16 19:52) [7]

Что-то вы, батенька, очень уж мудрствуете... Интерполяция по Лагранжу будет в самый раз.


 
ArtemESC ©   (2007-04-16 19:54) [8]

Чапаев ©   (16.04.07 19:52) [7]
Нет, лучше по Ньютону!!!!!


 
@!!ex ©   (2007-04-16 19:58) [9]

> [7] Чапаев ©   (16.04.07 19:52)

Хреново гуглится. А на Матане мы этого еще не проходили. Можно поподробнее.


 
@!!ex ©   (2007-04-16 20:00) [10]

Нашел что-то... Но там много незнакомых букв... :$


 
Dimka Maslov ©   (2007-04-16 20:02) [11]

Через любые три точки, не лежащие на одной прямой, можно провести кривую второго порядка. Другой вопрос, что это за кривая.


 
ArtemESC ©   (2007-04-16 20:03) [12]

@!!ex ©   (16.04.07 19:58) [9]
Самарский "Численные методы" страницы 59-61 ... Djvu


 
Чапаев ©   (2007-04-16 20:03) [13]

> [9] @!!ex ©   (16.04.07 19:58)
На матане и не пройдёте, это обычно на ЧМО проходят. :-)


 
ferr ©   (2007-04-16 20:05) [14]

Ну... не знаю что тебе надо. Через 3 точки ого-го что можно построить. Самое простое это окружность. Расписывешь уравнение серединных перпендикуляров, находиш точку их пересечения решением обыкновенного САУ второго порядка. Потом параметрически строишь дугу..


 
@!!ex ©   (2007-04-16 20:05) [15]

> [11] Dimka Maslov ©   (16.04.07 20:02)

Шо можно я это знаю. :))
Окружность можно. ТОлько чего то не получается. А то что получается не очень карашо выглядит.


 
@!!ex ©   (2007-04-16 20:07) [16]

> Расписывешь уравнение серединных перпендикуляров

Чего-чего???
Как это уравнение будет выглядить, елси не секрет?

Все равно будут частные случаи, когда точки лежат на одной прямой...


 
Kolan ©   (2007-04-16 20:09) [17]

> Как это уравнение будет выглядить, елси не секрет?

Прочитай то что тебе говорят. Там есть алгоритм.


 
@!!ex ©   (2007-04-16 20:11) [18]

> [17] Kolan ©   (16.04.07 20:09)

В процессе. Только качать еще полчаса..


 
Kolan ©   (2007-04-16 20:12) [19]

Интерполяция по Лагранжу будет в самый раз.

Вот это пол часа? — Неверю&#133


 
Kolan ©   (2007-04-16 20:17) [20]

http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%9B%D0%B0%D0%B3%D1%80%D0%B0%D0%BD%D0%B6%D0%B0


 
Dimka Maslov ©   (2007-04-16 20:18) [21]


> @!!ex ©   (16.04.07 20:05) [15]


А на сколько сложно вывести формулу для окужности, проходящей через три точки? А квадратной параболы? Это ш к о л ь н а я математика.


 
ferr ©   (2007-04-16 20:21) [22]

> А на сколько сложно вывести формулу для окужности, проходящей
> через три точки? А квадратной параболы? Это ш к о л ь н
> а я математика.

Ага, причём способов сотни..


 
ArtemESC ©   (2007-04-16 20:27) [23]

ferr ©   (16.04.07 20:21) [22]
Больше, ГОРАЗДО больше!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


 
@!!ex ©   (2007-04-16 20:27) [24]

> [21] Dimka Maslov ©   (16.04.07 20:18)

Да не сложно. составить матрицу и тупо релить СЛУ. Я ж говорю, проблема в куче частных случаев и в том, что параболу надо вращать, чтобы получить риемлимый вариант.


 
@!!ex ©   (2007-04-16 20:28) [25]

> [19] Kolan ©   (16.04.07 20:12)

Я книгу имел ввиду.


 
ferr ©   (2007-04-16 20:29) [26]

> Да не сложно. составить матрицу и тупо релить СЛУ. Я ж говорю,
> проблема в куче частных случаев и в том, что параболу надо
> вращать, чтобы получить риемлимый вариант.

1 частный случай. Если матрица имеет ранг 1 то точки лежат на одной прямой. Это для окружности.


 
Чапаев ©   (2007-04-16 20:49) [27]

> [19] Kolan ©   (16.04.07 20:12)
Поясни... :-)


 
@!!ex ©   (2007-04-16 20:58) [28]

Сделал через окружность. не плохо получилось.
Спасибо всем!


 
@!!ex ©   (2007-04-16 21:02) [29]

Procedure DrawCircle(P1,P2,P3:TPoint);
var
 ma,mb:single;
 x,y:single;
 radius:single;
begin
 if P1.x=p2.X then p1.x:=p1.x+1;
 if P2.x=p3.X then p3.x:=p3.x+1;
 ma:=(p2.Y-p1.y)/(p2.x-p1.x);
 mb:=(p3.Y-p2.y)/(p3.x-p2.x);
 if (ma=mb) then begin
   BackBuffer.Canvas.MoveTo(P1.X,p1.Y);
   BackBuffer.Canvas.LineTo(P3.X,p3.Y);
 end
 else begin
   x:=(ma*mb*(p1.Y-p3.y) + mb*(p1.x+p2.x) - ma*(p2.X+p3.x))/(2*(mb-ma));
   if ma<>0 then
     y:=(-1/ma)*(x-(p1.x+p2.x)/2)+(p1.y+p2.y)/2
   else
     y:=(-1/mb)*(x-(p2.x+p3.x)/2)+(p2.y+p3.y)/2;
   radius:=sqrt(sqr(p1.X-x)+sqr(p1.Y-y));
   backBuffer.Canvas.Arc(round(x-radius),round(y-radius),round(x+radius),round(y+radius),p1.X,p1.y,p3.X,p3.y);
 end;
end;


Другой косяк. В некоторых случаях нужно рисовать не от первой точки к третьей, а от третьей к первой...
но я не пойму, как эти случай отслеживать.


 
@!!ex ©   (2007-04-16 21:03) [30]

Все. понял. Нужно смотреть знак точки центра окружности при подстановке в уравнение прямой от первой точки к третьей...



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.056 c
15-1176737810
@!!ex
2007-04-16 19:36
2007.05.13
Кривая по трем точкам.


15-1176751428
vasIZmax
2007-04-16 23:23
2007.05.13
Дети рисуют Путина)))


2-1177335555
T.I.
2007-04-23 17:39
2007.05.13
не получается чё-то


15-1176321177
GreyWolf
2007-04-11 23:52
2007.05.13
Иконки


15-1176384751
botvin
2007-04-12 17:32
2007.05.13
Менеджер памяти