当前位置: 首页 > article >正文

【数学】旋转矩阵

参考链接
OpenGL

from OpenGL.GL import *
from OpenGL.GLUT import *
from math import *
import numpy as np
def draw_axes():
    glClear(GL_COLOR_BUFFER_BIT)

    # 绘制坐标轴
    glColor3f(1.0, 1.0, 1.0)  # 设置坐标轴颜色为白色
    glBegin(GL_LINES)
    glVertex2f(-1.0, 0.0)  # x 轴
    glVertex2f(1.0, 0.0)
    glVertex2f(0.0, -1.0)  # y 轴
    glVertex2f(0.0, 1.0)

    # 绘制刻度线
    glColor3f(0.5, 0.5, 0.5)  # 设置刻度线颜色为灰色
    for i in range(-10, 11):  # x 轴刻度线
        glVertex2f(i * 0.1, -0.02)
        glVertex2f(i * 0.1, 0.02)
    for i in range(-10, 11):  # y 轴刻度线
        glVertex2f(-0.02, i * 0.1)
        glVertex2f(0.02, i * 0.1)


    a1 = np.array([1, 1])
    glColor3f(1.0, 1.0, 0.0)
    glVertex2f(0.0, 0.0)
    glVertex2f(a1[0], a1[1])

    glColor3f(1.0, 0.0, 0.0)

    theta = 30*pi/180
    rotation = np.array([[cos(theta),-sin(theta)],
                        [sin(theta), cos(theta)]])
    a1 = rotation.dot(a1.T)
    glVertex2f(0.0, 0.0)
    glVertex2f(a1[0], a1[1])
    glEnd()
    # 添加 X 轴标签
    x_label = "X"  # X 轴标签内容
    glColor3f(1.0, 0.0, 0.0)
    draw_text(0.9, -0.1, x_label, GLUT_BITMAP_9_BY_15)

    # 添加 Y 轴标签
    y_label = "Y"  # Y 轴标签内容
    glColor3f(0.0, 0.0, 1.0)
    draw_text(-0.1, 0.9, y_label, GLUT_BITMAP_9_BY_15)

    glColor3f(1.0, 1.0, 1.0)
    draw_text(a1[0]-0.2, a1[1]-0.5, "2", GLUT_BITMAP_9_BY_15)
    glColor3f(1.0, 1.0, 1.0)
    draw_text(a1[0], a1[1]-1, "1", GLUT_BITMAP_9_BY_15)
    glFlush()

def draw_text(x, y, text, font):
    glRasterPos2f(x, y)
    for char in text:
        glutBitmapCharacter(font, ord(char))
def main():
    glutInit()
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(400, 400)
    glutCreateWindow(b"OpenGL Axes with Tick Marks")

    glClearColor(0.0, 0.0, 0.0, 0.0)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    glOrtho(-1.0, 1.0, -1.0, 1.0,-1,1)

    glutDisplayFunc(draw_axes)
    glutMainLoop()

if __name__ == "__main__":
    main()

在这里插入图片描述


http://www.kler.cn/a/149008.html

相关文章:

  • Redis - 集群(Cluster)
  • 继承和多态(上)
  • 使用Python实现定期从API获取数据并存储到数据库的完整指南
  • 机器学习day3-KNN算法、模型调优与选择
  • 【测试框架篇】单元测试框架pytest(1):环境安装和配置
  • 科技云报到:数字化转型,从不确定性到确定性的关键路径
  • xv6 磁盘中断流程和启动时调度流程
  • Java中实现精度准确的浮点数运算
  • SpringBoot——模板引擎及原理
  • RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树中断信息实验
  • 2023年国赛试题:配置inux1 为 CA 服务器
  • Linux dd命令详解:如何从标准输入或文件中读取、转换并输出数据(附实例教程和注意事项)
  • 7.5 Windows驱动开发:监控Register注册表回调
  • Day09
  • using meta-SQL 使用元SQL
  • awk,sed都可以用号表示查找结果,给查找结果加括号反引号
  • 『 Linux 』进程优先级
  • Pytorch:view()、permute()和contiguous()
  • Unity学习笔记11
  • 【Android Jetpack】Navigation的使用
  • 智能优化算法应用:基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 《尚品甄选》:后台系统——权限管理之分类和品牌管理,使用EasyExcel导入导出数据(debug一遍)
  • 记录vscode常用插件集合(extensions)
  • yml转properties工具
  • 【深度学习】参数优化和训练技巧
  • 森林无人机高效解决巡查难题,林区防火掀新篇