Отсутствующие линии в направлении Z - PullRequest
0 голосов
/ 12 июля 2020

Я написал функцию в Python, чтобы читать координаты двух точек в списке, вращать их по 3 осям и использовать координаты X и Y после поворота, чтобы провести линию между ними. Я использую эту функцию в программе, чтобы показать трехмерный куб и повернуть его.

def drawline(pointname1,pointname2):
        point1x = pointname1[0]
        point1y = pointname1[1]  
        point1z = pointname1[2] 
        point2x = pointname2[0]
        point2y = pointname2[1] 
        point2z = pointname1[2]                             
        
        betax = rotationxaxis 
        betay = rotationyaxis 
        betaz = rotationzaxis 
        #x-Axis Rotation
        point1x2 = point1x
        point1y2 = point1z*math.cos(betax)-point1y*math.sin(betax)
        point1z2 = point1z*math.sin(betax)+point1y*math.cos(betax)
        
        point2x2 = point2x
        point2y2 = point2z*math.cos(betax)-point2y*math.sin(betax)                 
        point2z2 = point2z*math.sin(betax)+point2y*math.cos(betax)
        #y-Axis Rotation
        point1x3 = point1z2*math.sin(betay)+point1x2*math.cos(betay)
        point1y3 = point1y2
        point1z3 = point1z2*math.cos(betay)-point1x2*math.sin(betay)
        
        point2x3 = point2z2*math.sin(betay)+point2x2*math.cos(betay)
        point2y3 = point2y2 
        point2z3 = point2z2*math.cos(betay)-point2x2*math.sin(betay)                       
        #z-Axis Rotation
        point1x4 = point1x3*math.sin(betaz)+point1y3*math.cos(betaz)
        point1y4 = point1x3*math.cos(betaz)-point1y3*math.sin(betaz)
        point1z4 = point1z3 
        
        point2x4 = point2x3*math.sin(betaz)+point2y3*math.cos(betaz)
        point2y4 = point2x3*math.cos(betaz)-point2y3*math.sin(betaz)   
        point2z4 = point2z3 
        
                    
        pygame.draw.line(display, (255,255,255), (display_width/2+point1x4,display_height/2+point1y4), (display_width/2+point2x4,display_height/2+point2y4))

Моя проблема в том, что если я проведу линию из двух точек с x0 y0 z1 и x0 y0 z-1 и поверните его вокруг оси x или y на 90 °, линии не будет. Но если я нарисую линию с помощью этой функции, которая просто использует координаты x и y, и обе точки имеют одинаковый z. Оно работает. Я пробовал несколько вещей, но это не работает.

...