Форум: "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.006 c