Ogre-next例子程序点击按钮X调窗口 Ogre-next的例子很多都是鼠标晃动,第一人称视角,想去点击右上角的关闭X按钮,关闭不了,只能alt-f4关闭窗口。原来sample中用的SDL的窗口,这里设置源代码如下后再编译OgreSampleCommon。例子程序中鼠标可以X调窗口了。是在ogre-next的。
Ogre13.6的glsl150的material脚本 worldviewproj_matrix是ogre内部定义的uniform,通过指定param_named_auto,自动的,不用再写额外代码将模型视图投影变换矩阵传给worldViewProj。这个vertex normal是Ogre内部设定的名称的,normal一般是用来计算光照,这里没用到.然后写test0.material,这个文件放到Media/materials/scripts下。这两个glsl文件放到Media/materials/programs/glsl150目录下。
OpenCascade面片导出网格的纹理坐标的计算 得到三角网格顶点的每个uv坐标,但是这个uv坐标其实是aFace的曲面方程的自变量F(u,v),如果将这个值设置给OSG,Ogre或者OpenGL。通过BRepMesh_IncrementalMesh得到OCC的Solid的各个Face的三角网格, 可以通过。下面计算曲面的纹理使得均匀贴敷,要通过uv算点Vi在曲面曲纹坐标网上的实际的u_s, v_s。经常matplot画的曲面上的黑色的网格就是曲纹坐标网。的纹理坐标,一般显示的曲面是扭曲的。
Ogre 13.x+Qt5-例子整理 下面的demo是创建了个QWindow然后作为Ogre的ApplicationContextQt的渲染窗口,调setup中的创建sceneManager,light,camera,然后设置为QMainWindow的centerWidget的,然后主要是创建了一个Ortho的camera,在resize时候调整,用ManualObject绘制点线或者三角形。
齿轮渐开线方程及绘制 我用蓝奏浏览器分享了[curvetest01], 下载链接:https://wwp.lanzoup.com/iTE2A12mp58j 提取码 : 8mok, 你可以不限速下载哦。齿轮轮齿轮廓是一个渐开线方程,当一根绳子绕紧一个圆拉直了端部旋转,则绳子端部画出的曲线就是一个螺旋状的渐开线,方程如下,渐开线齿之间啮合传动能保持恒定传动比,传动平稳等特性。下面还是用QPainter将曲线离散为多段线进行可视化。demo是用c4droid编译的apk放到蓝奏上面。
试用蓝奏云盘分享代码笔记及demo效果 这里就把以前用QPainter绘制螺线的Qt代码编译成apk放在蓝奏盘上。蓝奏盘的下载速度很快,而且可以在浏览器下载,这点很不错。提取码 : 4iir, 你可以不限速下载哦!
QOpenGLWidget下使用glad库 下面是opengl vertex array的api使用,这个特性opengl 4.x都不推荐了,但是由于简单,还有兼容老旧代码,调试方便等特性。gl 下拉列表选择opengl4.x, 选择compatibility,则可以支持1.x 2.x 3.x的API。勾选 generate a loader , 这个glad.h 就会有 gladLoadGL() 这个API;2.将glad.h glad.c k hr xxx.h添加到工程;1.glad网址 https://glad.dav1d.de/
交互式图形对象编辑原理-CAD中夹点-实体编辑例子 对于EDA中,实体主要是各种平面元器件和连线,主要的编辑是对元器件的脚点连线,拖动元件,这些脚点也是grip point的概念,当然CAD CAM EDA 领域包括行业CAD例如BIM GIS SWAT 船舶 航空航天等等业务区别和软件操作习惯及逻辑还是非常大的,还有一大块在行业数值模型或者电路网络的不同业务层面的仿真分析物理上的计算,属于更大的CAE概念,一般我们看到的交互编辑工作,俗话叫画图,属于CAE的前处理和后处理工作,侠义的CAD叫计算机辅助绘图。当单击三角形,显示夹点,夹点将会被扑捉。
图形学和计算机辅助设计(CAD)课程大作业-线对象选择与Snap 下面是计算机图形学和计算机辅助设计大作业记录,实现的是线和圆弧的pick及snap功能,绘制使用的是QPainter,参考的AutoCAD的snap逻辑,原理是计算projectPoint, 即鼠标位置和curve的距离,当小于snapbox的尺寸时,修改snapbox的位置,操作时感觉靠近曲线磁吸过去了。2.当鼠标靠近线,线高亮,同时鼠标吸到线上,鼠标在snapbox范围轻微移动,将保持吸靠到线不变。4.单击空白处,将取消选中的线,整个操作逻辑符合AutoCAD的pick-snap风格。
两个平面圆有交点的分析思考-关于平面几何 在看小学数学平面几何题,自然要提到欧几里得的几何原本,通过5条公设,可以推出几千条命题,就像看国内三国演义,没遇到孔明之前三国你都不能叫打仗只能叫打架群殴,直到孔明出场以后,西方科学公理演绎法的强大,可惜国人从清朝康熙那会都没有搞明白欧几里得那套东西是咋回事,以为殴的心里的几何就是空间想象力,其实殴的几何其实是基于一些基本的几何事实上的持续推导,只要公设正确,推导过程正确,结论精密的正确,当然推导不是一条线的往往是复杂的,几何原本也没写推导方法,这构成了复杂多变的经验和技能。所以C0和C1至少有一个交点。
简单多边形三角剖分 则离vi-vk线距离更远的点c(注意不能以距离vj距离来判断),该线段vj-c一定在多边形内,即vj-c将多边形分割成两个小多边形,递归的,最终将分割出一个三角形,是原多边形顶点上连续的三个点,这个递归过程本身也是一种实现。则会存在相邻的三个点 vi,vj,vk构成的三角形,其它顶点都在这个三角形的外面。那就把这个三角形分离出来,原来的多边形就少了一个顶点,继续发现耳朵三角形和分离。点vj是凸点,也就是 vi-vj-vk逆时针旋转。假设有其它顶点在三角形内部。这个三角形就是一个耳朵,vj是一个耳尖。
计算几何-断言( predicate) -点在直线上 计算几何算法一类函数是叫断言,又叫谓词,英语叫predicate,例如 3 小于 2,three little two,点 在直线上 point on line,小红 喜欢 小明,不喜欢 小黑, x like y,这里 little on like就是predicate。基于该距离计算,可以写出断言函数,点在直线上,浮点断言程序是在指定公差(tolerance)范围内判断是否为真,例如指定1e-5则距离小于0.00001都认为点在直线上。计算点到直线的距离是基于三维向量运算。
计算机图形学-图形边界表示下的正则集合运算原理注释 已知多边形面片MM: abcdef由点集拓扑,M将分为外部Me 边界Mb 内部Mif---------------e| || || || || d----------------c| || ||
关于tinyrender中的软opengl实现运行Qt的hellogl交互的调试例子 前面的tinyrender中心任务就是写像素,这也是opengl的中心任务,这里用QImage来写像素,和Qt的GUI交互,来用our_gl代替实际的OpenGL来实现Qt的hellogl程序用于调试。由于是软光栅器,小的obj模型还是能流畅旋转的,这里的shader是模拟了diffuse和specu光照.大部分opengl代码都是Qt5 的hellogl例子。还是粘贴的修改过的代码文件.
修改tinyrender为部分opengl函数及和glut绘制程序对照 修改了tinyrender的一些地方,tinyrender貌似说的也不清楚,把tinyrender的一些过程和opengl函数对照起来,主要用于光栅器原理阐述,下面粘贴修改的地方。main.cpp 很类似glut程序,先构造vbo,这里就是用model读取head.obj模型,也可以自己创建 test_createtriangle就是,调glutInit,传进去colorImage和depthImage两个图片,缺省的Gouraud光照shader。tgaimage.h tgaimage.cpp没有改动。
空间两直线间最短距离计算公式 空间直线L0, L1的参数方程为L0: P = a+u*s;L1: Q = b+v*t;其中a为L0的原点,u为单位方向向量, 参数s从-inf到+inf则 L0上的点P和L1的点Q的距离的平方为J = (P-Q)*(P-Q) = (P-Q)^2展开步骤为=> (a+u * s - b - v * t)^2=> u^2 * s^2 + v^2 * t^2 - 2*u*v *s*t + 2*(a-b)*u*s - 2*(a-b)*v*t + (a-b)^2J...
用python的matplotlib绘制圆柱双贯线 当圆柱面上打个圆孔,边沿就是下面绘制的曲线。图片如下# -*- coding: UTF-8 -*-import matplotlib as mplfrom mpl_toolkits.mplot3d import Axes3Dimport numpy as npimport matplotlib.pyplot as pltmpl.rcParams['legend.fontsize'] = 10fig = plt.figure()ax = fig.gca(projection='3d'
使用Qt的QPainter绘制阿基米德螺旋线 把笔记 c++绘制极坐标曲线 的代码中的allegro换成Qt的了。 因为自定义的QWidget写在源文件中所以Q_OBJECT注释掉了。#include <QApplication>#include <QWidget>#include <QPainter>#define _USE_MATH_DEFINES#include <math.h>int w=640;int h=480;struct vec2d{ double x; do
c++绘制极坐标曲线-使用Allegro绘图库 曲线绘制使用的allegro5图形图像库很简单,它的2d功能类似MFC的GDI绘图,对于函数平面曲线都是采样曲线上的点连成多段线对曲线逼近,下面两个程序都是极坐标下的曲线,一个是阿基米德螺旋线,一个是cos曲线.curve0.cpp 阿基米德螺旋线#include <stdio.h>#include <allegro5/allegro.h>#include <allegro5/allegro_primitives.h>#include <vector>