Лекция 4::Задача 1

Пресичане с цилиндър

Да се реализира пресичане на лъч с цилиндър: да се създаде нов наследник на класа Geometry, който представя цилиндър. Цилиндъра се задава чрез:

* точка (Vector) - център на долната основа на цилиндъра
* радиус
* височина

Цилиндърът е винаги изправен (основата му e успореднa на равнината XZ).
Изчисляването на UV координатите реализирайте по подобие със сферата, само че ползвайте цилиндрични координати (вижте wikipedia за подробности).

Точки: 6т.

EDIT: тук има примерна картинка как трябва да изглежда резултатът.

Comments

UV

може ли малко пояснения за UV координатите или някакав линк просто в уикипедия или другаде не мога да намеря :(

Ето в Wikipedia:

Ето в Wikipedia: http://en.wikipedia.org/wiki/Cylindrical_coordinates

При нас радиалното разстояние не е от значение, важни са азимутът и височината (φ и y). Например, сложете
u = φ / 2π
v = (y - pos.y) / height

Където pos е позицията на цилиндъра (т.е. центъра на долната му основа), а height е височината му.

Горна точка

Имам друг въпрос за изпълняването на самия алгоритъм както и за намирането на нормалния вектор ни трябва да намерим и центъра на горната основа на цилиндъра нали.. ?

Разбира се. Но това не е

Разбира се.
Но това не е проблем, цилиндърът е изправен, т.е.

<горен център> = <долен център> + Vector(0, <височина>, 0),

да знам просто исках да бъда

да знам просто исках да бъда сигурна мерси много :)

Разстояния

Sorry за тъпият въпрос, ама разстоянието до къде трябва да връщаме в структурата info?!

От началото на лъча

От началото на лъча (ray.start), до пресечната точка.

Хм а това у нали е височината

Хм а това у нали е височината ,но височината е height нещо или се бъркам или немога да разбера у просто координата на горния център ли е или просто са едно и също с height .. ?
И още 1 въпрос за изчисляването на фи ми искат х и z координати ами тези координати на пресечната точка с лъча ли са или... и аз незнам

Да, тези "x", "y" и "z" са

Да, тези "x", "y" и "z" са координатите на пресечната точка.
y != height. height е височината на цилиндъра (сиреч е някаква константа).