|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.07.2013, 23:17 | #1 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
Проблема с double при вычислении выражения
Здравствуйте! Пишу свою первую программу на java. Застрял на этой строке:
Код:
xCalc - double, points[], basePoints[] и calculatedPoints[]- Point2D(double), Код:
И при таких значениях: points[j].x = 0, points[j+1].x = 100, calculatedPoints.length = 4, n = 1 xCalc получается не 25 (0+(100-0)*(1/4)), а 0 Выдайт такую ошибку: java.lang.ArrayIndexOutOfBoundsExce ption: 10, но это, скорее всего, с вопросом не связано. Наверное много ненужного написал, зато лишних вопросов не будет) Подскажите пожалуйста как правильно записать выражение? |
18.07.2013, 08:20 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну так приведите аргументы выражения в скобках к double перед делением.
я не знаю java, но я бы попробовал так: Код:
Код:
Код:
|
18.07.2013, 10:00 | #3 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
Это, конечно, самый очевидный выход , но я бы хотел обойтись без приведения типов
И ещё: хоть я и писал points=basePoints.clone(); при изменении значений points[] (например points[0].setLocation(50,60), всё равно изменяются и значения basePoints[] Последний раз редактировалось x_Alex_x; 18.07.2013 в 10:12. |
18.07.2013, 13:05 | #4 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
|
18.07.2013, 20:21 | #5 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
При отладке обнаружил, что после выполнения строки points=basePoints.clone(); переменные в массиве points не обновлятся, а изменяется только.. не знаю как правильно сказать, но происходит то же самое, что и при использовании чего-то типа points = new Point2D[x];
|
18.07.2013, 20:47 | #6 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
Сам разобрался) Не стал использовать clone(), а просто переписал в цикле все элементы.
|
22.07.2013, 19:44 | #7 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
Возник ешё один вопрос, по тому же самому выражению.
Для вычисления значений точки использую несколько повторений просчёта по такой строке: Код:
Затем, используя (int) и Graphics2D drawLine рисую на экране линии по вычисленным точкам (это кривые Безье) Выходит вот что: Вопрос: почему появляются такие зазубрины и как их убрать? ps: когда-то писал подобную штуку на winapi и там то же самое было. Последний раз редактировалось x_Alex_x; 22.07.2013 в 19:48. |
24.07.2013, 00:38 | #8 |
Пользователь
Регистрация: 14.12.2012
Сообщений: 36
|
Углубляясь в Graphics2D там почитай про сглаживание.
|
24.07.2013, 10:59 | #9 |
Пользователь
Регистрация: 13.01.2013
Сообщений: 94
|
darknim, сглаживание не поможет я уже его ставил. Проблема в самом расчёте точек или способе округления. Очевидно же, что таких углов на кривой быть не может.
|
24.07.2013, 12:03 | #10 |
Пользователь
Регистрация: 14.12.2012
Сообщений: 36
|
ну тогда тут у тебя косяк с округлением. например у тебя в расчетах получается число 1.6 ты его приводишь к int, получаешь 1. А при правильном округлении должно получится 2.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема в вычислении. | caliente | Общие вопросы C/C++ | 4 | 22.02.2013 02:56 |
Сообщение об ошибке при вычислении длины строки | vedro-compota | Общие вопросы Delphi | 24 | 17.05.2010 16:23 |
При вычислении максимального значения выдает О | kerill385884 | Помощь студентам | 3 | 25.03.2010 18:52 |
Ошибка при вычислении.. | CodeExpert | Помощь студентам | 7 | 17.02.2010 17:24 |
Странная проблема при сложении double. Помогите разобраться. | ivank | Общие вопросы C/C++ | 2 | 23.09.2008 13:04 |