|
|
#1
|
||||
|
||||
ленейка
Всем привет товарищи! Возникла проблема с написанием кода. Есть картинка http://www.delphisources.ru/forum/at...d=135169922 9.Вообщем что мне нужно. Если программа проводит линию от 0 до 50 то она по пикселям высчитывает правильно, но если проводит линию от 0 до 10 то показывает 18. Как можно исправить эту проблему.
P.S. Константа расчитана(50/на количестово пикселей от 0 до 50) с плавающей точкой. |
#2
|
||||
|
||||
взять константу как целое и как единичный отрезок, т.е., например, в одном делении 20 пикселей, соответсвенно десятое деление будет через 200 пикселей, пятидесятое - 1000 пикселей и.т.д.
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#3
|
||||
|
||||
Ленейка
Я так и расчитываю константу. А вычесляет почемуто с погрешностью.Можно ли как нибудь сгладить еще 2-ой константой чтобы она выравнивала значения до номинальной (1 точка),а когда доходит до (2-ой точки) уже подганяется 1-ой константой?
|
#4
|
||||
|
||||
Честно говоря, по описанию проблемы не понял ничего, кроме того, что пытаешься нарисовать линейку. Попытаюсь ответить исходя из того, что понял (то есть названия).
Код:
const step = 3.1415926535; // шаг линейки в пикселях const len = 100500; // длина линейки в шагах const rlen = len * step; // длина линейки в пикселях ... var x: real; ix: integer; ... x := 0; while x < rlen do begin ix := Round(x); Canvas.MoveTo(ix, 0); Canvas.LineTo(ix, 10); x := x + step; end; Можно ускорить код, если делать цикл for ... to по делениям, а не по координате. Integer'ы сравниваются быстрее. Если ответил совсем не в тему - сформулируй, пожалуйста, яснее свой вопрос. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 31.10.2012 в 23:35. |
#5
|
||||
|
||||
ленейка
2.jpg По данному рисунку постараюсь более точно сформулировать свой вопрос. Если провести линию от 0 до 50 1-ая верт. линия (расчитывается по одной константе) её длина составляет 50, но если по этой же константе провести линию от 0 до 10 (2-ая линия), то её длина получается 18 (По ходу здесь вылазиет погрешность из-за того что отрезки разноудаленные от начальной точки). Мне нужно чтобы в отрезке от 0 до 10 2-ая линия равнялась 10.
|
#6
|
||||
|
||||
Дайте код-то свой, а то получается постановка диагноза по фотографии...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |