Трабл С Графикой

Тема в разделе "C/C++/C#", создана пользователем QWIPQ, 22 дек 2011.

  1. QWIPQ

    QWIPQ Гость

    Здравствуйте
    Есть задачка и куча проблем к ней...

    Суть задачи: есть карта(или часть карты) в цилиндрической проекции, необходимо нанести пеленг на нее... суть в том, что пеленг на данной карте есть СПЕЦИФИЧЕСКАЯ кривая которая задается функцией...

    Вопрос: как возможно реализовать построение графика функции из определенной точки на поле TImage??
    или предложите вариант как это можно реализовать...

    Пример(Прикрепленная картинка): так должно быть в идеале пример взят из программы DXAtlas

    Заранее спасибо.
     

    Вложения:

  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Я понял так: надо провести кривую от одной точки на изображении до другой в виде дуги.

    P.S.: Язык программирования? Навыки в программировании есть?
     
  3. QWIPQ

    QWIPQ Гость

    Язык: С++
    Среда: RAD Studio 2010

    Навыки кое-какие есть... теперь задача стоит за построением этой кривой... только вопрос как эт сделать...

    P.S. ты первый с 3х форумов кто хоть чет написал :)
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Я не просто так спросил. Что сам предпринял для решения задачи?
    Какими средствами необходимо пользоваться?
     
  5. QWIPQ

    QWIPQ Гость

    хоть и новичок в проганье и дофига чему учиться, но хоть чет знаю)

    рассматривал различные методы построения этой кривой от построения элипса и использования Arc, сделал привязку пикселей к координатам, динамически отображение координат при перемещении курсора по карте чтоб хоть как-то отследить какую-нить зависимость... смотрел метод TChart но в нем минус хоть и можно сделать в нем отображение графика функции но нельзя оставить ток график и нельзя привязать к рисунку... если можно то не разобрался до конца видимо...

    любые :) главное чтоб было написано на С++
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Завтра подумаю. Сегодня спать пора.
     
  7. QWIPQ

    QWIPQ Гость

    завтра наступило:) есть у кого какие идеи?:)
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    У меня непредвиденные обстоятельства, сегодня-завтра расскажу о результатах построения дуги.
     
  9. QWIPQ

    QWIPQ Гость

    ок, спасибо, жду
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    У этой дуги координата Y начальной и конечной точки совпадают?
     
  11. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Могу предложить только такой вариант.

    Код (C++):
    void arc( HDC hdc, int x0, int x1, int y )
    {
    double  r, h;
    double  cx, cy;
    int     i, a, n;

    a = x1 - x0;
    n = a / 4;
    if ( !(n & 1) ) n++;
    h = sqrt( 3. ) / 2 * a;
    cx = (double)a / 2 + x0;
    cy = h + y;

    for ( i = 0, r = PI*4/3; r <= PI*5/3 + 0.0001; r += PI/3 / n, i++ ) {
    if ( i & 1 ) {
    LineTo( hdc,
    cos( r ) * a + cx,
    sin( r ) * a + cy );
    } else {
    MoveToEx( hdc,
    cos( r ) * a + cx,
    sin( r ) * a + cy, NULL );
    }
    }
    }
     

    Вложения:

    • ARC.png
      ARC.png
      Размер файла:
      4,4 КБ
      Просмотров:
      88
  12. QWIPQ

    QWIPQ Гость

    нет это произвольная точка пространства, известно только что точка конца будет находиться не выше точки начала...

    P.S. как только код опробую и разберусь в нем напишу. спасибо
     
  13. QWIPQ

    QWIPQ Гость

    подскажи плз на чем рисует... а то не встречал такого еще... вроде все глянул подставил что нужно но програ висит, и ток вижу ЦП грузит и Оперативку жрет...
    еще вопросик по HDC... я с THandle еще не встречался... раскажи плз поподробней что эт и как работает... ща гуглил нашел общее представление о HDC но ничего конкретного...
     
  14. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Мой код работает только если точки находятся на одной горизонтальной прямой.

    Не совсем понял, т.е. точка конца может быть ниже точки начала?
     
  15. QWIPQ

    QWIPQ Гость

    она фактически ниже... но самый трабл эт когда точка конца на одном X но разных Y... в таком случае должна быть прямая...
     
  16. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Нет смысла разбираться в моем коде, если точки не находятся на одном уровне.
     
  17. QWIPQ

    QWIPQ Гость

    1. смысл в попутном самообучении параллельном
    2. если все-таки удастся построить то возможно не все так плохо... можно попробовать будет переделать если понять как неизвестные части работают...
     
  18. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Теперь я думаю что понял окончательно что тебе нужно, но не уверен что смогу сделать.

    P.S.: я не знаю что такое THandle, TChart и т.д. и т.п... Ты пишешь в MFC, в C++ Builder или где вообще?
     
  19. QWIPQ

    QWIPQ Гость

    для меня пока что эт неизвестно:) точнее я знаю функции LineTo, MoveTo но в таком исполнении через 3 оператора еще не видел

    Добавлено:
    Embarcadero RAD Studio 2010 == C++ Biulder 6
     
  20. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Похоже я не смогу тебе помочь.
     
Загрузка...

Поделиться этой страницей