aspnet网站开发作业,手机兼职项目,编辑html,网站软件应用大全texture_x int(alpha * texture_image.get_width()) texture_y int(beta * texture_image.get_height())为什么没有gama
2024/3/30 15:45:52
在使用重心坐标进行纹理映射时#xff0c;通常是通过计算 alpha 和 beta 来确定纹理图片上的对应位置#xff0c;而 gamma 通常是… texture_x int(alpha * texture_image.get_width()) texture_y int(beta * texture_image.get_height())为什么没有gama
2024/3/30 15:45:52
在使用重心坐标进行纹理映射时通常是通过计算 alpha 和 beta 来确定纹理图片上的对应位置而 gamma 通常是通过 alpha 和 beta 相互关系来计算的因为重心坐标满足 alpha beta gamma 1。因此通常情况下不需要单独计算 gamma因为它可以通过 alpha 和 beta 推导得到从而减少了计算的复杂性和冗余。
import pygame
from pygame.locals import *
import sys
import mathpygame.init()width, height 800, 600
screen pygame.display.set_mode((width, height))vertices [(160, 300, 1), (400, 40, 1), (600, 300, 1)]angle 0
rotation_speed 2 # 可根据需要调整旋转速度
cpygame.time.Clock()
fFalse
suofang100
ax0
ay0
bx0
by0
cx0
cy0ci0
zx0
zy0
zhongxina0
zhongxinb0
zhongxinc0imgpygame.image.load(1.png).convert_alpha()
def draw_triangle(vertices):#points [rotate_point(vertex, angle) for vertex in vertices]global ciglobal axglobal ayglobal bxglobal byglobal cxglobal cypoints []new_vertices []for x, y, z in vertices:new_x x * math.cos(math.radians(angle)) - z * math.sin(math.radians(angle))new_z x * math.sin(math.radians(angle)) z * math.sin(math.radians(angle))new_vertices.append((new_x, y, new_z))(ax, ay, az), (bx, by, bz), (cx, cy, cz) new_vertices#print(p,;;)# 绘制多边形#pygame.draw.polygon(screen, (200, 200, 200), transformed_points)#print(transformed_points)while True:screen.fill((255, 255, 255))#c.tick(7)for event in pygame.event.get():if event.type QUIT:pygame.quit()sys.exit()keys pygame.key.get_pressed()if keys[pygame.K_UP]:f Trueif event.type pygame.KEYUP:f Falseif fTrue:suofangsuofang-10draw_triangle(vertices)#angle rotation_speed#print(....,ax,ax ,ay,ay,bx,bx,by,by,cx,cx,cy,cy)for h in range(600):for w in range(600):zx wzy h# 重心坐标在求出中心后就不需要了后面需要用这个坐标来判断屏幕中每个像素是否在三角形内#print(zx,zy)za1 -(zx - bx) * (cy - by) (zy - by) * (cx - bx)za2 -(ax - bx) * (cy - by) (ay - by) * (cx - bx)zhongxina za1 / za2zb1 -(zx - cx) * (ay - cy) (zy - cy) * (ax - cx)zb2 -(bx - cx) * (ay - cy) (by - cy) * (ax - cx)zhongxinb zb1 / zb2zhongxinc 1 - zhongxina - zhongxinbif (0zhongxina1 and 0zhongxinb1 and 0zhongxinc1):#print(h,w)pygame.Surface.set_at(screen, (int(w), int(h)),(img.get_at((int(zhongxina*img.get_width()),int((zhongxinb*img.get_height()))))))#(img.get_at((int(i/10),int(gao/10)))))# zx (ax bx cx) / 3# zy (ay by cy) / 3# #重心坐标在求出中心后就不需要了后面需要用这个坐标来判断屏幕中每个像素是否在三角形内## # x,y500 abc三点不满足大于0小于1# -0.7076923076923077# 1.3282051282051281# 0.3794871794871797# 1.0## x,y143 都满足大于0小于1在三角形内# 0.94 0.04666666666666667 0.013333333333333384 1.0## x,y300 都满足在三角形内# 0.2153846153846154 0.6102564102564103 0.1743589743589743 1.0## x,y0 不满足不在三角形内# 1.6 -0.4666666666666667 -0.13333333333333341 0.9999999999999999## x770,y143 不满足 不在三角形内# -0.6676923076923077 -1.0251282051282051 2.692820512820513 1.0## x230,y190满足在# 0.6205128205128205 0.147008547008547 0.23247863247863246 1.0# # za1-(zx-bx)*(cy-by)(zy-by)*(cx-bx)# za2-(ax-bx)*(cy-by)(ay-by)*(cx-bx)# zhongxinaza1/za2## zb1-(zx-cx)*(ay-cy)(zy-cy)*(ax-cx)# zb2-(bx-cx)*(ay-cy)(by-cy)*(ax-cx)# zhongxinbzb1/zb2## zhongxinc1-zhongxina-zhongxinb#print(zhongxina,zhongxinb,zhongxinc,zhongxinazhongxinbzhongxinc,zx,,zx,zy,zy)pygame.Surface.set_at(screen, (int(zx), int(zy)),(190, 90, 90))pygame.display.flip()