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

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

  1. QWIPQ

    QWIPQ Гость

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

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

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

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

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

    Вложения:

  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

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

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

    QWIPQ Гость

    Репутация:
    0
    Язык: С++
    Среда: RAD Studio 2010

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

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

    lazybiz Well-Known Member
    C\C++ Team

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

    QWIPQ Гость

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

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

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

    lazybiz Well-Known Member
    C\C++ Team

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

    QWIPQ Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

    QWIPQ Гость

    Репутация:
    0
    ок, спасибо, жду
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

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

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    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
      Размер файла:
      4,4 КБ
      Просмотров:
      88
  12. QWIPQ

    QWIPQ Гость

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

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

    QWIPQ Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

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

    QWIPQ Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

    QWIPQ Гость

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

    lazybiz Well-Known Member
    C\C++ Team

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

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

    QWIPQ Гость

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

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

    lazybiz Well-Known Member
    C\C++ Team

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

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