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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рассчет координат аналитически 
:(
    Опции темы
S.A.G.
Дата 17.3.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

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



Например есть две точки (x1;y1), (x2;y2). Извесно что координаты точки средины отрезка будут такими:
Код

x3:= (x1 + x2) / 2;
y3:= (y1 + y2) / 2;

Однако величины для x3 и y3 скорее всего будут нецелыми. Что с ними делать. Округлять:
Код

x3:= Round((x1 + x2) / 2);
y3:= Round((y1 + y2) / 2);

Или усекать:
Код

x3:= Trunc((x1 + x2) / 2);
y3:= Trunc((y1 + y2) / 2);



--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
tigger
Дата 17.3.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

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



x3:= (x1 + x2) div 2;
y3:= (y1 + y2) div 2;


--------------------
user posted image
PM MAIL   Вверх
S.A.G.
Дата 17.3.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

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



Но это же не гарантирует что точка будет строго на средине отрезка?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
VICTAR
Дата 17.3.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Мне кажется, что лучше округлять, результат будет точнее
PM MAIL   Вверх
S.A.G.
Дата 17.3.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

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



Вот и я тоже так думаю. Интересно как делаеться все это в популярных графических пакетах, например CorelDraw. Там можно выбрать еденицу измерения. Как там оно приводиться к пикселям?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
ivan219
Дата 17.3.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Чтобы ты не делал всё равно если длинна отрезка чётная то середины не получиш резултат однй половины будет отличатся от другой на 1 пиксель а если не чётный то центр получиш точный.
Цитата(main @  17.3.2007,  15:59 Найти цитируемый пост)
Как там оно приводиться к пикселям?

Через спец фунуции.

Это сообщение отредактировал(а) ivan219 - 17.3.2007, 16:49
PM MAIL ICQ   Вверх
Sunvas
Дата 17.3.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(ivan219 @  17.3.2007,  16:38 Найти цитируемый пост)
Чтобы ты не делал всё равно если длинна отрезка чётная то середины не получиш резултат однй половины будет отличатся от другой на 1 пиксель а если не чётный то центр получиш точный.


Не думаю, что тут нужна особая точность: мало-какой пользователь увидит разницу в один пиксель.
Цитата(main @  17.3.2007,  15:59 Найти цитируемый пост)
Там можно выбрать еденицу измерения. Как там оно приводиться к пикселям?

Всякую еденицу измерения привести точно привести к пикселям невозможно!
Провести линию на мониторе длиной в один сантиметр может только пользователь с карандашом и линейкой!


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
S.A.G.
Дата 17.3.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

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



Меня беспокоит потеря точности при расчете более сложных вещей. Если делить отрезок там может быть наверное 1 пикс. разницы в ту или иную сторону. С ростом сложности расчета координаты точность будет падать. Как с этим бороться? Или вот еще - скажем есть изделие размером 320.5 см. на 248.2 см., как его отобразить в масштабе на PaintBox, где все координаты измеряються пикселями. Насколько знаю у каждого монитора свои размеры пикселя и наверное междупиксельного пространства (оно может быть даже разным по горизонтали и вертикали). Может полезть в GDI - наверное должны быть специальные функции или может структуры данных хранящие всю эту инфу..


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
VladBD
Дата 18.3.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я думаю если дело здесь не связано с печатью - то можно обойти просто...
- берешь 320,5х248,2
- устанавливаешь свою масштабизацию (например 1см=1пиксель=100% - отображения на экране)
- рисуешь сетку
- отображаешь на экране с округлением
- только при увеличении масштаба до 200% - ты сможешь отрисовать 0,5 - в целый пиксель
- при масштабе 500% - 0,2 пикселя
ну и полосы прокрутки не забыть и метки на сетке менять т.к. масштабирование и ее коснется...
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.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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