![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Функция выдаёт серьёзные ошибки, но только в случае маленького угла линии к плоскости с которой ищется пересечение. Помогите советом, всё перепроверил по формулам вроде так...
Точка p1 - координаты лампочки, точка p2 - координаты вершины которая отбрасывает тень, плоскость Pl - пол или стенка на которую отбрасываться тень. Это сообщение отредактировал(а) BoomeR - 26.6.2008, 18:28 |
|||
|
||||
| Dennnis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 23.3.2008 Репутация: нет Всего: 4 |
А ты не мог бы привести значения параметров при которых выдается ошибка, а то в твоем коде фиг разберешься)
--------------------
Get Rich or Die Tryin' |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
не разбирался с самими формулами, но так
сравнивать вещественные числа нельзя, точного значения "0" никогда (почти) не будет заведи некую маленькую дельту, вычитай её из абсолютного значения левой части, проверяй, меньше ли 0 результат |
|||
|
||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Dennnis,
p2 = -50 -50 50 или -50 -50 -50 а p1 = 83 -73 0 mihryak, спасибо щас попробую |
|||
|
||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Ошибку так и не выявил. Есть ещё идеи?
|
|||
|
||||
| Zakonnic |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 2 Всего: 6 |
Телепатия это хорошо и встроенный в мозг дебаггер - тоже. Но если бы прилагался бы текст эксепшена, а в коде были комментарии, то понять, что не так, было бы гораздо проще.
На первый взгляд здесь может быть только DivideByZeroException:
Нулем могут быть переменная M и выражение (Pl.A*cosa + Pl.B*cosb + Pl.C*cosg). Тупой и злобный способ - завернуть все в трай/кеч:
--------------------
...и никогда не пишите в комментариях правду |
||||
|
|||||
| Dennnis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 23.3.2008 Репутация: нет Всего: 4 |
У тебя класс point немного криво реализован).
Мне кажется сдесь ошибка переполения, потому что в случае маленького угла линии к плоскости координата точки пересеч. получается очень большая. Попробуй сделать новый класс point и вместо float использовать double. --------------------
Get Rich or Die Tryin' |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
BoomeR, во-первых, это - пять баллов :
Во-вторых, начать бы с этого :
Хочу потестировать, но Вы выдали лишь координаты пары точек. Необходимы также коэффициенты A, B, C, D для параметрического уравнения плоскости. -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
marcusmae,
Вот параметры выдающие ошибки : p2 = (-50 -50 50) или (-50 -50 -50) p1 = (83 -73 0) A 0.0 B -2100800.0 C 252096.0 D 546208000.0 Могу подобрать ещё если будет нужно З.Ы. Спасибо за помощь |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Ну что-то получилось, конечно :
- неправильно?
-------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Народ, откуда у вас там косинусы с синусами повылазили?
Может я, конечно, уже и забыл. Давно это было... Возьмите книжку "аналитическая геометрия". Там есть прямо пример, как находится точка пересечения прямой и плоскости. Прямая задана двумя точками. Плоскость тремя или (линией и точкой), что одно...уйственно. Матричный метод решения задачи. Без всяких косинусов. Это сообщение отредактировал(а) vlsaf - 24.6.2008, 17:26 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |