Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

Геометрия в делфи. !срочно!   Найти похожие ветки 

 
Лено ©   (2007-04-19 21:55) [0]

всем добрый вечер. кровь износу завтра с раннего утра надо сдать 4 программы.
1. Построить треугольник и его медианы по 3 точкам, которые запрашиваются в начале программы.
2. По запрашиваемым 4 точкам построить четырёхугольник и провести диагонали.
3. Построить по 3 запрашиваемым точкам треугольник и описанную вокруг него окружность.
4. По запрашиваемым точкам( не более 10) построить многоугольник и закрасить его.
помогите хоть с несколькими!
заранее спасибо!


 
homm ©   (2007-04-19 22:00) [1]

> кровь износу завтра с раннего утра надо сдать 4 программы.

Првый курс что-ли? :) Послушай мой мудрый совет: ложись спать, оно того не стоит, раньше нужно было делать.


 
Jeer ©   (2007-04-19 22:14) [2]


> мудрый совет: ложись спать,


Лучше с другом у которого тоже есть друг
И будет вам лучший из треугольников со временем превращающийся в многоугольник.:)


 
homm ©   (2007-04-19 22:20) [3]

> Лучше с другом у которого тоже есть друг

Ужас. Вот уж интересно что имелось ввиду.


 
Лено ©   (2007-04-20 07:59) [4]

homm да, первый:)


 
Плохиш ©   (2007-04-20 13:36) [5]

Странно, раньше для "незаконченного высшего" надо было учиться на 4м курсе...

PS. Предлагаю в анкету в список образования добавить пункт "Неначатое"


 
McSimm_ ©   (2007-04-20 13:40) [6]


> кровь износу завтра с раннего утра надо сдать

надо же :)


 
Fenik ©   (2007-04-20 17:08) [7]

3.

function getTriangleOutCircleCenter(Ax, Ay, Bx, By, Cx, Cy: Integer): TPoint;
var M, N, Dx, Dy: Double;
   A2, ABx, ABy, ACx, Z: Integer;
begin
 A2 := Sqr(Ax) + Sqr(Ay);
 M := A2 - Sqr(Bx) - Sqr(By);
 N := A2 - Sqr(Cx) - Sqr(Cy);
 ABx := Ax - Bx;
 ABy := Ay - By;
 ACx := Ax - Cx;
 Z := (ACx*ABy - ABx*(Ay - Cy)) shl 1;
 if (Z = 0) or (ABx = 0) then
   raise Exception.Create("Invalid triangle");
 Dy := (M*ACx - N*ABx) / Z;
 Dx := (M/2 - Dy*ABy) / ABx;
 Result := Point(Round(Dx), Round(Dy));
end;

Остальное тривиальное.


 
Fenik ©   (2007-04-20 17:47) [8]

Сорри. Функция несколько неправильная, если Ax = Bx;
Исправил:

function getTriangleOutCircleCenter(Ax, Ay, Bx, By, Cx, Cy: Integer): TPoint;
var M, N, Dx, Dy: Double;
   A2, ABx, ABy, ACx, Z, P: Integer;
begin
 A2 := Sqr(Ax) + Sqr(Ay);
 M := A2 - Sqr(Bx) - Sqr(By);
 N := A2 - Sqr(Cx) - Sqr(Cy);
 if Ax <> Bx then ABx := Ax - Bx
             else ABx := 1;
 ABy := Ay - By;
 ACx := Ax - Cx;
 Z := (ACx*ABy - ABx*(Ay - Cy)) shl 1;
 if Z <> 0 then Dy := (M*ACx - N*ABx) / Z
           else raise Exception.Create("Invalid triangle");
 Dx := (M/2 - Dy*ABy) / ABx;
 Result := Point(Round(Dx), Round(Dy));
end;


 
Олег_П   (2007-04-22 16:45) [9]

> Fenik © [8]

А не подскажешь, как мне нарисовать стрелочку( т.е. тот-же самый треугольник но без основания). Подробнее: есть линия, ее начальная координата и конечная, так вот эту стрелочку нужно нарисовать на "конце" этой линии
----------> - конец линии - вершина треугольника.
Туго у меня с геометрией(математикой), поэтому прошу, если можно то сразу кодом, иначе от формул мне толку мало(их ведь еще и понять надо что-ж они делают) :(
Что-нибудь типа:
procedure DrawArrow(Cn: TCanvas; const P1, P2: TPoint; Angl, ASize:Double);
begin
 Cn.MoveTo(P1.X, P1.Y); Cn.LineTo(P2.X, P2.Y);
 {И тут расчитать эту стрелку}
end;

где P1 - начальные координаты линииъ
   Р2 - конечные..
   Angl - угол стрелки
   ASize - Длина катетов.
Заранее Спасибо.
PS - Сорри за вмешательство. Не хотелось начинать отдельной темы.



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

Форум: "Media";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1202380777
kyn66
2008-02-07 13:39
2008.03.16
Пропало окно отладки Watches


2-1202980335
TankMan
2008-02-14 12:12
2008.03.16
В какой компонент можно вставлять копированное с HTML странички


2-1203329126
WebSQLNeederr
2008-02-18 13:05
2008.03.16
Перемешать рендомно строки TStringList


15-1202207987
Berkut
2008-02-05 13:39
2008.03.16
Постановка инженерной задачи по "Численное дифференциирование"


15-1202232861
terminalhead
2008-02-05 20:34
2008.03.16
Как в компоненнте Webbrowser пропускать ошибки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский