Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 05.02.2012
Сообщений: 17
1

Получить координаты пересечения 2х линий.

02.05.2012, 00:31. Показов 1476. Ответов 1
Метки нет (Все метки)

Здравствуйте, рисую синусоиду и делаю дискретизацию, но не знаю как получить координаты пересечения. Помогите решить данную проблему.
В Edit1 задается шаг дискретизации, он может быть любой, во вложенных файлах скриншот, на нем обведены синим точки пересечения, которые нужно вывести в стринггрид (это к примеру, точки пересечения могут быть другими, зависят от шага дискретизации)...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Math;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i, x, y:integer;
begin
  x := StrToInt(Edit1.Text);
 
  Image1.Canvas.MoveTo(0,0);
  Image1.Canvas.LineTo(0, Image1.Height);
 
  For i := 0 to Image1.Width do
  begin
    Image1.Canvas.MoveTo(x,0);
    Image1.Canvas.LineTo(x, Image1.Height);
    x := StrToInt(Edit1.Text)+x;
  end;
 
    Image1.Canvas.Pen.Color := clRed;
    Image1.Canvas.MoveTo(0, 300);
 
    For y := 0 to Image1.Width do
    begin
      Image1.Canvas.LineTo(y, trunc(50*sin(y *50)) + 100);
    end;
    
end;
end.
Миниатюры
Получить координаты пересечения 2х линий.  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2012, 00:31
Ответы с готовыми решениями:

DirectxX VB.net координаты точки пересечения двух 3D линий
есть две 3D линии Axyz-Bxyz и Сxyz-Вxyz подскажите, пожалуйста как найти координаты пересечения...

Матлаб - как определить координаты точки пересечения двух линий
Есть вот такая вот программа, помогите сделать так что бы в четырехугольнике(заданий точками) при...

Получить координаты линий
Подскажите, пожалуйста, можно ли получить в ВБА координаты линии, т.е. объекта Shape.line. Нужны...

Получить точку на окружности (на хорде) между заданными точками и координаты пересечения окружности с прямой
Дано: Координаты двух точек на плоскости (в них требуется вписать окружность) (t1, t2) Радиус...

1
111 / 85 / 21
Регистрация: 06.06.2011
Сообщений: 411
Записей в блоге: 1
02.05.2012, 13:18 2
По сути дела, ответ кроется тут:
Цитата Сообщение от Dikey Посмотреть сообщение
For y := 0 to Image1.Width do begin Image1.Canvas.LineTo(y, trunc(50*sin(y *50)) + 100); end;
Т.е. координата Y пересечения на шаге Х считается по формуле:
y := 50*sin(X *50)) + 100

P.S. и вынеси "x := StrToInt(Edit1.Text)+x;" перед циклом. Незачем каждый раз преобразовывать строку в число. Не говоря уже о том, что в случае неверного ввода, получишь кучу сообщений об ошибке.

Короче вот, правильны код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
procedure TForm1.Button1Click(Sender: TObject);
var i, x, y, step:integer;
begin
  x := StrToInt(Edit1.Text);
  step := x;
 
  Image1.Canvas.MoveTo(0,0);
  Image1.Canvas.LineTo(0, Image1.Height);
 
 
  while x < Image1.Width do
  begin
    Image1.Canvas.MoveTo(x,0);
    Image1.Canvas.LineTo(x, Image1.Height);
    x := x + step;
  end;
 
    Image1.Canvas.Pen.Color := clRed;
    Image1.Canvas.MoveTo(0, 300);
 
    For y := 0 to Image1.Width do
    begin
      Image1.Canvas.LineTo(y, trunc(50*sin(y *50)) + 100);
    end;
 
  x := step;
  while x < Image1.Width do
  begin
    y := trunc(50*sin(x *50)) + 100;
    Image1.Canvas.MoveTo(x - 5, y - 5);
    Image1.Canvas.LineTo(x + 5, y + 5);
    Image1.Canvas.MoveTo(x - 5, y + 5);
    Image1.Canvas.LineTo(x + 5, y - 5);
    x := x + step;
  end;
end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2012, 13:18

Нахождение пересечения линий
Здравствуйте! Дано изображение с белым фоном и черными пересекающимися линиями. Надо найти...

Точка пересечения двух линий в 3D
Есть две линии в 3D, каждая из которых задана двумя точками L1 = p1(x1,y1,z1), p2(x2,y2,z2); L2 =...

Найти точку пересечения линий
Необходимо нарисовать точку строго на пересечении линий. Я сделал так,что бы точка приблизительно...

Файл с координатами линий - найти пересечения
Помогите пожалуйста! Есть файл координат вершин ломанной линии на плоскости. Проверить имеет ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.