Рисование спектра

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Рисование спектра

Сообщение gaidar » 16.05.2006 (Вт) 23:36

Добрый день,

Который уже день бью голову над одной задачей. Есть массив точек x,y в два столбца. Нужно нарисовать эти точки и соединить прямыми (спектр вывести). Собственно, это сделать не проблема, проблема в том, как сделать это максимально быстро (т.е. в идеале моментально :)).

Если у кого-нибудь есть идеи, либо кто-то уже подобное делал, то я буду благодарен за отклики.

Пример программы, которая делает все быстро даже для бешеного количества точек - OriginLab Origin: http://originlab.com/index.aspx?s=12&lm=62
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.05.2006 (Ср) 3:17

День добрый, но Гайдар, я вот вообще не понял суть конечного рисунка. Картнику одну покажи, что ли. Там где исходные точки отмечены на фоне результата :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.05.2006 (Ср) 7:00

Это тот самый Origin, который был от Microcal, или какой-то новый?
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 17.05.2006 (Ср) 16:17

tyomitch писал(а):Это тот самый Origin, который был от Microcal, или какой-то новый?



Тот самый, который от Microcal.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 17.05.2006 (Ср) 16:18

Картинка, например: Изображение
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 17.05.2006 (Ср) 16:20

Мысль в том, что нужно нарисовать вот такую картинку, имея где-то около 8000-32000 точек (повыбрасывав часть, разумеется, а то пикселей не хватит). При этом отрисовать шкалу, подписи и какие-нибудь буковки. При этом сделать это максимально быстро (имеющимися средствами, например GDI/GDI+ в VB/VB.NET). У ребят в Origin скорость, мягко говоря, оптимальная :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.05.2006 (Ср) 16:25

А может заюзать DX?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 17.05.2006 (Ср) 17:35

Нафих, нафих... Хотя, если кто-нибудь попробует и покажет, я бы посмотрел :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 18.05.2006 (Чт) 11:23

Жаль, что никто не знает...
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.05.2006 (Чт) 11:56

Кто-то что-то точно знает.
Весь вопрос в определении пересечения области знаний с областью желаемого (для меня это пересечение до сих пор неочевидно).
Polyline на 16К точек с последующим stretchblt выполняется чуть меньше секунды. Давние эксперименты показывают, что вызов Line в цикле почему-то быстрее вызова Polyline (сейчас не проверял).
Принципиальной иной вариант - занесение точек в массив и ручное проведение линий между ними по алгоритму Брезенхема (где-то выложено тут за авторством Rainbow), после чего SetDIBits (но опять же, не проверял, возможно, это медленнее).
Собственно, вопрос в границах приемлемости решения...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 143

    TopList