Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Chart, точка пересечения двух графиков 
:(
    Опции темы
withNoName
Дата 5.11.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2006

Репутация: нет
Всего: нет



Очень прошу помощи в решении вопроса.
Имеем Chart  и две серии типа Line.  Как можно получить координаты точки пересечения этих серий?

PM MAIL   Вверх
NightmareZ
Дата 5.11.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: нет
Всего: 13



А при чём тут Chart? У тебя же графики строятся из двух массивов значений? - Ну вот в них и ищи пересечение.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
withNoName
Дата 5.11.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2006

Репутация: нет
Всего: нет



Для построения графика я использую компонент Chart. Значения беру предварительно расчитанные из таблицы. Если бы чертил на бумаге то точка пересечения определилась бы графически.  Как это реализовать программно незнаю.
PM MAIL   Вверх
Alexeis
Дата 5.11.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



withNoName, Chart это не математический пакет! Он служит для отображения, а не расчетов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
withNoName
Дата 5.11.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2006

Репутация: нет
Всего: нет



Тоесть и голову ломать не стоит? 
Хм ...  Прийдётся математически что-то придумывать.
PM MAIL   Вверх
Zero
Дата 6.11.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(withNoName @  5.11.2006,  23:53 Найти цитируемый пост)
Прийдётся математически что-то придумывать.

Цитата(withNoName @  5.11.2006,  21:49 Найти цитируемый пост)
Имеем Chart  и две серии типа Line.

Если это просто прямые линни, то придумать можно формулу в одну строчку...
PM MAIL ICQ   Вверх
withNoName
Дата 6.11.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2006

Репутация: нет
Всего: нет



Построена кривая по 13 точкам и её пересекает горизонтальная прямая, например AB. Координаты точки A известны. У точки B известен только Y, который равен Y-ку точки A, нужно найти X точки B который определится пересечением с кривой.
Zero, напиши, пожалуйста, формулу которую ты имеешь ввиду.
Прошу прощения за сумбурное изложение, не силён ни в геометрии ни в программировании.
PM MAIL   Вверх
Zero
Дата 7.11.2006, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Ну вот на рис. твой пример. Если отбросить все лишние точки, то задача своидится к нахождении координаты X, точки С, которая является пересеченим прямых, меджу точками AB и LM

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  111.jpg 7,23 Kb
PM MAIL ICQ   Вверх
Zero
Дата 7.11.2006, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Вот тут посмотри пример в прикреплённом файле, введи координаты точек A,B,L,M при этом имей ввиду, что y-координата точек A и B должна быть одинаковой, и тебе выдастся значекние X-координаты.

Добавлено @ 01:13 
Цитата(withNoName @  6.11.2006,  14:12 Найти цитируемый пост)
У точки B известен только Y, который равен Y-ку точки A, нужно найти X точки B который определится пересечением с кривой.

X-координата вообще не на что не влияет. её в моём примере можеш и не вводить, это так для формальности сделано.

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  test.rar 1,56 Kb
PM MAIL ICQ   Вверх
VTK
Дата 7.11.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



По-моему в наборе TeeChart 6 есть функция для определения точки пересечения двух прямых...
http://www.steema.com/downloads/dwn_tch_vcl.html
PM MAIL ICQ   Вверх
VTK
Дата 7.11.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Точно, есть такой класс в TeeChart6
Код

unit Function_CrossPoints;
{$I TeeDefs.inc}

interface

uses
  {$IFNDEF LINUX}
  Windows, Messages,
  {$ENDIF}
  SysUtils, Classes,
  {$IFDEF CLX}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls,
  {$ELSE}
  Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
  {$ENDIF}
  Base, TeeProcs, TeEngine, Chart, StatChar, Series;

type
  TCrossPointsDemo = class(TBaseForm)
    TeeFunction1: TCrossPointsFunction;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Series3: TLineSeries;
    CheckBox1: TCheckBox;
    procedure CheckBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$IFNDEF CLX}
{$R *.dfm}
{$ELSE}
{$R *.xfm}
{$ENDIF}

procedure TCrossPointsDemo.CheckBox1Click(Sender: TObject);
begin
  Series3.Visible:=CheckBox1.Checked;
end;

procedure TCrossPointsDemo.FormCreate(Sender: TObject);
begin
  inherited;
  Series1.FillSampleValues(25);
  Series2.FillSampleValues(25);
end;

initialization
  RegisterClass(TCrossPointsDemo);
end.


PM MAIL ICQ   Вверх
withNoName
Дата 8.11.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2006

Репутация: нет
Всего: нет



VTK, сходил по ссылке, посмотрел. Да действительно в TeeChart6 есть то что мне нужно, и это сильно упростило бы задачу. На как я понял этот компонент платный, а это мне уже не подходит. За информацию, спасибо - возьму на заметку.

Zero, всё отлично заработало! Правда, немного по другому написал формулу, но на мысль натолкнул твой код. Вспомнилось уравнение прямой на плоскости, оттуда и выразил X.

Всем большое спасибо за помощь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.