![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.06.2009
Сообщений: 4
|
![]()
нужно построить треугольник по точкам на плоскости, и внутри этого треугольника построить второй треугольник. что бы 2 треугольник не выходил за кроя первого треугольника. Помогите сетку закрыть....
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Чего закрыть?
Так что ли? Код:
I'm learning to live...
Последний раз редактировалось Stilet; 10.06.2009 в 16:17. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 10.06.2009
Сообщений: 4
|
![]()
может быть. у нас программирование всего пол года. а я со своими знаниями даже не смог запустить то что ты скинул! скинь плиз в личку или выложи полностью листинг!!
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 10.06.2009
Сообщений: 4
|
![]()
ага типа того:-) вот только как его с текстом задания подогнать!!!!
-----------------текст задания Построить два треугольника с вершинами в заданном множестве точек на плоскости так, чтобы первый треугольник лежал строго внутри второго. |
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 10.06.2009
Сообщений: 4
|
![]()
вот есть наброски. но не знаю как можно сюда задать свой кординаты, или кнопку слученные кординаты и построение треугольника!!!
----------------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPnt = record x, y: real; end; type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Function WherePoint(a, b, p: TPnt):integer; var S: real; begin S := (b.x - a.x) * (p.y - a.y) - (b.y - a.y) * (p.x - a.x); if S > 0 then WherePoint := 1 else if S < 0 then WherePoint := -1 else WherePoint := 0; end; (* функция определеяет относительное положение точки: внутри или нет *) function PointInsideTreangle(a, b, c, p: TPnt):boolean; var s1, s2, s3: integer; begin Result := false; s1 := WherePoint(a, b, p); s2 := WherePoint(b, c, p); if s2 * s1 <= 0 then exit; s3 := WherePoint(c, a, p); if s3 * s2 <= 0 then exit; Result := true; end; function Min(a, b: real): real; begin if a < b then Result := a else Result := b; end; function Max(a, b: real): real; begin if a > b then Result := a else Result := b; end; function GetPnt(a, b, c: TPnt; MinX, MinY, MaxX, MaxY: real): TPnt; var P: TPnt; begin repeat P.x := MinX + Random(Round(MaxX - MinX)); P.y := MinY + Random(Round(MaxY - MinY)); until PointInsideTreangle(a, b, c, p) = true; Result := P; end; procedure DrawLine(P1, P2: TPnt; Canvas: TCanvas); begin with Canvas do begin MoveTo(Round(P1.x), Round(P1.y)); LineTo(Round(P2.x), Round(P2.y)); end; end; procedure GenerateTriangle(a, b, c: TPnt); var cnt: integer; MinX, MinY, MaxX, MaxY: real; P1, P2, P3: TPnt; begin Randomize; MinX := Min(Min(a.x, b.x), c.x); MinY := Min(Min(a.y, b.y), c.y); MaxX := Max(Max(a.x, b.x), c.x); MaxY := Max(Max(a.y, b.y), c.y); P1 := GetPnt(a, b, c, MinX, MinY, MaxX, MaxY); P2 := GetPnt(a, b, c, MinX, MinY, MaxX, MaxY); P3 := GetPnt(a, b, c, MinX, MinY, MaxX, MaxY); DrawLine(P1, P2, Form1.Canvas); DrawLine(P2, P3, Form1.Canvas); DrawLine(P3, P1, Form1.Canvas); end; procedure RndPnt(var p: TPnt); begin Randomize; p.x := Random(Form1.ClientWidth); p.y := Random(Form1.ClientHeight); end; procedure Solve; var a, b, c: TPnt; begin Form1.Canvas.FillRect(Form1.ClientR ect); RndPnt(a); RndPnt(b); RndPnt(c); DrawLine(a, b, Form1.Canvas); DrawLine(b, c, Form1.Canvas); DrawLine(c, a, Form1.Canvas); Application.ProcessMessages; GenerateTriangle(a, b, c); end; procedure TForm1.btn1Click(Sender: TObject); begin Solve; end; end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? | Mclaren | Помощь студентам | 2 | 27.04.2009 22:37 |
БД в делфи | Neymexa | Помощь студентам | 29 | 29.01.2009 20:32 |
Делфи | Neymexa | Помощь студентам | 6 | 20.01.2009 21:29 |
Из с++ в Делфи | Andre1723 | Общие вопросы Delphi | 4 | 02.06.2008 17:50 |
Делфи | ozhjog | Свободное общение | 4 | 20.05.2007 21:06 |