- 博客(26)
- 收藏
- 关注
原创 OpenCascade面片导出网格的纹理坐标的计算
得到三角网格顶点的每个uv坐标,但是这个uv坐标其实是aFace的曲面方程的自变量F(u,v),如果将这个值设置给OSG,Ogre或者OpenGL。通过BRepMesh_IncrementalMesh得到OCC的Solid的各个Face的三角网格, 可以通过。下面计算曲面的纹理使得均匀贴敷,要通过uv算点Vi在曲面曲纹坐标网上的实际的u_s, v_s。经常matplot画的曲面上的黑色的网格就是曲纹坐标网。的纹理坐标,一般显示的曲面是扭曲的。
2024-07-21 16:43:42 275
原创 Ogre 13.x+Qt5-例子整理
下面的demo是创建了个QWindow然后作为Ogre的ApplicationContextQt的渲染窗口,调setup中的创建sceneManager,light,camera,然后设置为QMainWindow的centerWidget的,然后主要是创建了一个Ortho的camera,在resize时候调整,用ManualObject绘制点线或者三角形。
2023-07-20 00:02:01 404
原创 齿轮渐开线方程及绘制
我用蓝奏浏览器分享了[curvetest01], 下载链接:https://wwp.lanzoup.com/iTE2A12mp58j 提取码 : 8mok, 你可以不限速下载哦。齿轮轮齿轮廓是一个渐开线方程,当一根绳子绕紧一个圆拉直了端部旋转,则绳子端部画出的曲线就是一个螺旋状的渐开线,方程如下,渐开线齿之间啮合传动能保持恒定传动比,传动平稳等特性。下面还是用QPainter将曲线离散为多段线进行可视化。demo是用c4droid编译的apk放到蓝奏上面。
2023-07-16 16:28:43 623
原创 试用蓝奏云盘分享代码笔记及demo效果
这里就把以前用QPainter绘制螺线的Qt代码编译成apk放在蓝奏盘上。蓝奏盘的下载速度很快,而且可以在浏览器下载,这点很不错。提取码 : 4iir, 你可以不限速下载哦!
2023-07-08 23:01:43 1366
原创 过平面三点求圆的圆心和半径
设平面三点v0,v1,v2 求过三点的圆的圆心c?采用克莱姆法可以计算出(xc, yc),当分母。知道圆心,则代入(1)可以求出半径r。则AB构成一个二元一次方程组。
2023-07-08 13:33:10 586
原创 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/
2023-07-06 20:04:21 246
原创 交互式图形对象编辑原理-CAD中夹点-实体编辑例子
对于EDA中,实体主要是各种平面元器件和连线,主要的编辑是对元器件的脚点连线,拖动元件,这些脚点也是grip point的概念,当然CAD CAM EDA 领域包括行业CAD例如BIM GIS SWAT 船舶 航空航天等等业务区别和软件操作习惯及逻辑还是非常大的,还有一大块在行业数值模型或者电路网络的不同业务层面的仿真分析物理上的计算,属于更大的CAE概念,一般我们看到的交互编辑工作,俗话叫画图,属于CAE的前处理和后处理工作,侠义的CAD叫计算机辅助绘图。当单击三角形,显示夹点,夹点将会被扑捉。
2023-07-02 14:13:58 188
原创 图形学和计算机辅助设计(CAD)课程大作业-线对象选择与Snap
下面是计算机图形学和计算机辅助设计大作业记录,实现的是线和圆弧的pick及snap功能,绘制使用的是QPainter,参考的AutoCAD的snap逻辑,原理是计算projectPoint, 即鼠标位置和curve的距离,当小于snapbox的尺寸时,修改snapbox的位置,操作时感觉靠近曲线磁吸过去了。2.当鼠标靠近线,线高亮,同时鼠标吸到线上,鼠标在snapbox范围轻微移动,将保持吸靠到线不变。4.单击空白处,将取消选中的线,整个操作逻辑符合AutoCAD的pick-snap风格。
2023-06-18 21:40:57 285
原创 两个平面圆有交点的分析思考-关于平面几何
在看小学数学平面几何题,自然要提到欧几里得的几何原本,通过5条公设,可以推出几千条命题,就像看国内三国演义,没遇到孔明之前三国你都不能叫打仗只能叫打架群殴,直到孔明出场以后,西方科学公理演绎法的强大,可惜国人从清朝康熙那会都没有搞明白欧几里得那套东西是咋回事,以为殴的心里的几何就是空间想象力,其实殴的几何其实是基于一些基本的几何事实上的持续推导,只要公设正确,推导过程正确,结论精密的正确,当然推导不是一条线的往往是复杂的,几何原本也没写推导方法,这构成了复杂多变的经验和技能。所以C0和C1至少有一个交点。
2023-05-14 18:48:50 177
原创 简单多边形三角剖分
则离vi-vk线距离更远的点c(注意不能以距离vj距离来判断),该线段vj-c一定在多边形内,即vj-c将多边形分割成两个小多边形,递归的,最终将分割出一个三角形,是原多边形顶点上连续的三个点,这个递归过程本身也是一种实现。则会存在相邻的三个点 vi,vj,vk构成的三角形,其它顶点都在这个三角形的外面。那就把这个三角形分离出来,原来的多边形就少了一个顶点,继续发现耳朵三角形和分离。点vj是凸点,也就是 vi-vj-vk逆时针旋转。假设有其它顶点在三角形内部。这个三角形就是一个耳朵,vj是一个耳尖。
2023-05-12 23:08:43 250
原创 计算几何-断言( predicate) -点在直线上
计算几何算法一类函数是叫断言,又叫谓词,英语叫predicate,例如 3 小于 2,three little two,点 在直线上 point on line,小红 喜欢 小明,不喜欢 小黑, x like y,这里 little on like就是predicate。基于该距离计算,可以写出断言函数,点在直线上,浮点断言程序是在指定公差(tolerance)范围内判断是否为真,例如指定1e-5则距离小于0.00001都认为点在直线上。计算点到直线的距离是基于三维向量运算。
2023-05-11 23:25:47 227
原创 计算机图形学-图形边界表示下的正则集合运算原理注释
已知多边形面片MM: abcdef由点集拓扑,M将分为外部Me 边界Mb 内部Mif---------------e| || || || || d----------------c| || ||
2022-11-14 00:23:49 292
原创 关于tinyrender中的软opengl实现运行Qt的hellogl交互的调试例子
前面的tinyrender中心任务就是写像素,这也是opengl的中心任务,这里用QImage来写像素,和Qt的GUI交互,来用our_gl代替实际的OpenGL来实现Qt的hellogl程序用于调试。由于是软光栅器,小的obj模型还是能流畅旋转的,这里的shader是模拟了diffuse和specu光照.大部分opengl代码都是Qt5 的hellogl例子。还是粘贴的修改过的代码文件.
2022-09-25 14:55:36 324
原创 修改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没有改动。
2022-09-12 19:41:51 352
原创 空间两直线间最短距离计算公式
空间直线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...
2022-02-19 01:06:20 5308
原创 用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'
2022-01-13 22:52:53 616
原创 使用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
2022-01-11 00:24:03 514 1
原创 c++绘制极坐标曲线-使用Allegro绘图库
曲线绘制使用的allegro5图形图像库很简单,它的2d功能类似MFC的GDI绘图,对于函数平面曲线都是采样曲线上的点连成多段线对曲线逼近,下面两个程序都是极坐标下的曲线,一个是阿基米德螺旋线,一个是cos曲线.curve0.cpp 阿基米德螺旋线#include <stdio.h>#include <allegro5/allegro.h>#include <allegro5/allegro_primitives.h>#include <vector>
2022-01-10 00:07:42 1517
原创 用python的numpy和matplotlib绘制函数曲线sin(x)/x
微积分的极限一章上 y=sin(x)/x 在x趋近为0的极限为1,而且还有几何很直观的证明,这里就用pydroid画一下它的函数图像,曲线还是挺好看的import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-16, 16, 10000)y= np.sin(x) /xplt.plot(x, y, label='sin(x)/x')plt.xlabel('x label')plt.ylabel('y label')
2022-01-08 11:10:10 2531
原创 stl的list容器-用模板双链表部分模仿
这是整理的STL库的list容器的双向链表的实现,内部是用了好多指针,实现了push(pop)_back(front)方法,代码备份到博客。#include<iostream>namespace nst{ template<class S> class list_node { public: S val; list_node<S>* next; list_node<S>* pre; list_node(S&
2022-01-07 13:03:52 390
原创 控制台屏幕上跑动的字符-质点运动模拟的C++小程序
元旦整理了个C++的控制台的程序,可以动画运动的符号,可视化直接用的printf,所以不用其它什么额外库,但是有用到C++11以上的语法和库,所以最好是VC2015~VC2022的编译,直接拷贝代码就行。是一个笑脸符号在屏幕上飘,点和屏幕中心的固定点有个弹性力作用,为了叫点不发散,点在运动时候受到阻尼会减速的,a d s w按健分别会朝左右下上推一下点。main.cpp#include<string>#include<vector>#include<stdio.h>
2022-01-04 22:35:08 689
原创 stl的vector容器-n维向量的点积
C++的STL中的vector是一个动态数组,可以表示多维向量(一般平面二维向量对应的vector的size为2,三维对应的size为3), 求向量v的笛卡尔长度则为v点乘v自己的开平方根。#include <iostream>#include <vector>#include <math.h>bool vetor_dot_mul(const std::vector<double>& a, const std::vector<dou.
2022-01-03 13:02:01 845
原创 程序for while if
int main(){ int a = 1; int b = 2; int c = 0; int n = 100; double f = 0.0 for (int i=0; i<n; i++) { f += i; } while (f>0.0) { f -= 1.0; } if (a>b) { c=a; } else
2022-01-01 23:21:15 242
原创 配置VC++20XX的glut库
(从自己的博客园博客随笔搬来的)这个以VC2010为例子,VC2015, VC2019几乎没有变化安装VS2010旗舰版,这个在百度下搜索VS2010旗舰版可以找到很多,还有安装步骤,安装完后记得填写KEYglut库配置, 现在opengl.org上的glut推荐的freeglut,习惯性的找个预编译包,就用Nate的Glut3.7.6预编译包,nate地址http://user.xmission.com/~nate/glut.html, glut3.7.6 bin地址http://use.
2021-04-10 22:57:01 365
原创 直线段-两点线性插值及可视化
(博客园最近不知道怎么了,把自己的随笔搬一些过来CSDN这边)已知直线段AB,线性插值求插值点C的公式为:C =A*(1.0 -t) +B*t,,其中t的范围为 [0.0, 1.0], 0值时候为A点,1值时候为B点下面是用QPainter可视化GrphWidget.h#ifndef GRPHWIDGET_H#define GRPHWIDGET_H#include <QWidget>#include "ui_grphwidget.h"class Grph...
2021-04-10 22:34:55 1027
原创 试试printf函数
下面是main函数#include<studio.h>int main(){ printf("This is main function.\n"); return 0;}
2021-04-07 02:21:34 83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人