реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> растолкуйте следующее Си-свинство.
Сергей Борщ
сообщение May 28 2012, 06:15
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Lebets_VI @ May 27 2012, 22:29) *
в строке: reportBuffer.dx = d = DIVIDE_BY_64(cosinus);
происходит сразу 2 присваивания: переменным "reportBuffer.dx" и "d" присваивается значение DIVIDE_BY_64(cosinus). И в какой последовательности они присваиваются, знает только компилятор sm.gif,
Неправильно. Порядок занесения значений очень даже четко определен. В этом выражении используются два выражения "оператор присваивания" и результат первого (d = DIVIDE_BY_64(cosinus)) является аргументом второго (reportBuffer.dx =). Причем то, что в результате этих выражений в d и reportBuffer.dx оказываются новые значения - всего лишь побочный эффект выражения "оператор присваивания".

QUOTE (ветерок @ May 27 2012, 22:50) *
странно для чего присваивать 7 и сдвигать на 6 бит,если можно было сразу присвоить результирующее значение
Потому что тут используется арифметика с фиксированной точкой, значения имеют 6 битов после запятой. И в данном случае в переменную заносится число 7.0, что сразу видно из такой записи исходника. Если бы там было, как вы предлагаете, написано число 448 - то много народу сломало бы голову, пытаясь ответить на ваш вопрос "что за магическое число 448 тут стоит"?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ветерок
сообщение May 28 2012, 09:41
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



ну я то уже проанализировал и выдал ,как я это вижу.
функция линейна-это я так вижу.
Но на самом деле окружность рисуется!

Буду рад если вы мне откроете глаза конечно-безмерно.

вот как я это вижу:
http://youtu.be/WH7LYUTf7m0

Сообщение отредактировал ветерок - May 28 2012, 09:47


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 28 2012, 10:49
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ветерок @ May 28 2012, 12:41) *
функция линейна-это я так вижу.
Но на самом деле окружность рисуется!
Дико извиняюсь, что нет времени посмотреть исходник. Но это, случаем, не реализация алгоритма Брезенхема для рисования окружностей? И вот с разъяснением: http://www.codenet.ru/progr/video/alg/alg4.php


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ветерок
сообщение May 28 2012, 11:30
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



Сергей Борщ
что-то в этом есть..
Но у меня-то отсутствуют "ключевые пиксели" или их невидно из-за относительности координат перемещения курсора.

записал видео с трассировкой маршрута )
http://youtu.be/u4gOIj9_7WI

никак не могу сообразить как так получается...

Сообщение отредактировал ветерок - May 28 2012, 11:30


--------------------
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 28 2012, 12:35
Сообщение #20


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Сергей Борщ @ May 28 2012, 13:49) *
Но это, случаем, не реализация алгоритма Брезенхема для рисования окружностей?
«Та не»™
CORDIC поворт вектора.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ветерок
сообщение May 28 2012, 16:59
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



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


--------------------
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 28 2012, 17:39
Сообщение #22


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Извините, конечно, но я сейчас Сергею отвечал.
Первое сообщение этой темы видел минут через пять после его написания, задолго до первого ответа.
Но сам Вам не отвечал, конверт уже заклеен был.
________________
Привет, Пятачок!
Как живёшь?
С приветом, Пух.
p.s. Хотел послать тебе три рубля, но уже заклеил конверт.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Lebets_VI
сообщение May 28 2012, 19:09
Сообщение #23





Группа: Участник
Сообщений: 12
Регистрация: 15-02-10
Пользователь №: 55 506



Цитата(ветерок @ May 28 2012, 20:59) *
объясните на пальцах, в википедии нервы кончились.


1. Квадрата (ромба) там нет. (есть вычисленные значение, но здесь приводить не буду т.к. полный цикл 365 строк, могу скинуть в личку)
2. Это скорее всего и есть алгоритм Брезенхейма, только адаптированный для окружности.
3. А самое главное, в HID report-е передаются не координаты, а смещения относительно предыдущего положения. По сути - Брезенхем sm.gif, только предыдущие координаты отрезка, драйвер HID уже знает sm.gif Вот по этому и получается окружность.

ЗЫ Хотя ReAl прав, на CORDIC больше похоже.

Сообщение отредактировал Lebets_VI - May 28 2012, 19:36
Go to the top of the page
 
+Quote Post
ветерок
сообщение May 28 2012, 19:13
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



всем объявляю благодарность за отзывчивость я примерно понял,хочу отметить что это очень изящное решение.
Не смотря на всё это свинство ))


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016