Nov 13, 2024 11:37
Это ведь непростая задача! Я с детства мечтаю о том, чтобы понять как удаляются невидимые линии в алгоритмическом порядке без использования буфера глубины. Мне хочется раскусить эту тему и сделать в любом случае, хотя бы даже теоретически, но сделать.
Вкратце говоря, при удалении линии всегда необходимо проверять наличие пересечений с проекцией треугольника, который рисуется. Если линия пересекает этот треугольник, то надо посмотреть, где именно она пересекается, на какой грани. Если она находится за гранью треугольника (сзади - что легко вычислить), то тогда с этой точки эта линия начинает скрываться и есть два случая -- либо конечная точка находится за треугольником, тогда в этом случае, рисование линии обрывается, а если спереди, то линия продолжает рисоваться дальше, при этом возможно что она пересечется еще с каким-то треугольником позже.
Если линия пересечется еще раз с тем же треугольником, это говорит о том, что она продолжить рисоваться дальше. Но это еще не все. Помимо этого, требуется проверять еще, не лежит ли эта точка за какими-то еще треугольниками, кроме проверяемого. Так что придется обойти все линии проекции, что очень и очень много занимает времени.
По всей видимости, я эту тему буду еще долго делать, потому что проблема конечно, огромная с этим. Я просто ленивый Лис, который ничего не хочет далать вовремя, так что все сложно.
Помимо, собственно, отображения графики подобным образом, я бы хотел подумать, можно ли создать такую систему, в которой пересечение могло бы быть не таким, а еще точки пересечения на самом треугольнике. Это огромная проблема. Вообще даже не знаю как и описать... нужно учитывать еще не только то, что фигуры будут находиться одна за другой, но и то, что они могут пересекаться, то есть один куб будет в другом кубе. Это странно, но это реальная ситуация в графике.
Графика,
Дневник