IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Графика, и немного математики
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Владимир

Репутация: -  0  +


На канве объекта Image я отмечаю две точки, далее рисую оси x и y,подскажите пожалста как можно нарисовать отрезок равный отмеченному, но который будет || оси x и проходить через ось y?



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
var x1,y1: array [0..10] of integer;
i:Integer;
ln:real;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
x1[0]:=Image1.Width div 2;
y1[0]:=Image1.Height div 2;
end;

//Отмечаем точки
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if i<2 then begin
inc(i);
with Image1.Canvas do
ellipse(x,y,x+5,y+5);
if i=1 then begin
x1[1]:=x-Image1.Width div 2;
y1[1]:=-(y-Image1.Height div 2);
end;
if i=2 then begin
x1[2]:=x-Image1.Width div 2;
y1[2]:=-(y-Image1.Height div 2);
end;
end
else showMessage(' ');

end;
procedure TForm1.Button1Click(Sender: TObject);

begin
ln:=sqrt(sqr(x1[1]-x1[2]) + sqr(y1[1]-y1[2]));//находим длину отрезка

With image1.Canvas do begin
//Оси
MoveTo(Image1.Width div 2,0);
LineTo(Image1.Width div 2,Image1.Height);
MoveTo(0,Image1.Height div 2 );
LineTo(Image1.Width,Image1.Height div 2);

end;
end;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


таких отрезков может быть очень много....
равен - по длине?
а проходить через у где угодно может?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Владимир

Репутация: -  0  +


Я понимаю что очень много.. мне главное алгоритм,который я как раз таки и не могу составить((, а так можно где угодно только бы равный и параллельный Оx.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ну, если ошибка округления не очень принципиальна, то можно делать так:
1. считаем длину отрезка - координаты 2 точек известны. округляем.
2. проводим отрезок между точками (-d/2;y)(d/2;y), где y - произвольное....


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.10.2020 4:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name