circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。
以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义的吧。我在同类文章中发现 有人写了 circleMidpoint(scrPt &c, GLint r) 和里面嵌套的void putpixel(GLint x0, GLint y0, GLint x, GLint y),竟然跑起来了。
为啥没有人提到这个事情,是本道长太菜了?还是这事太简单了,不值一提?

#include "stdafx.h"
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h> using namespace std;const GLdouble twoPi = 6.283185;class scrPt {
public:GLint x, y;
};GLsizei winWidth = 400, winHeight = 300; // Initial display window size.void init(void)
{glClearColor(1.0, 1.0, 1.0, 1.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
//书上的代码里没有,自己后补的。2-1
void putpixel(GLint x0, GLint y0, GLint x, GLint y)
{glBegin(GL_POINTS);glVertex2f(x0 + x, y0 + y);glVertex2f(x0 + x, y0 - y);glVertex2f(x0 - x, y0 + y);glVertex2f(x0 - x, y0 - y);glVertex2f(x0 + y, y0 + x);glVertex2f(x0 + y, y0 - x);glVertex2f(x0 - y, y0 + x);glVertex2f(x0 - y, y0 - x);glEnd();}// Midpoint routines for displaying a circle.//书上的代码里没有,自己后补的。2-2
void circleMidpoint(scrPt &c, GLint r) //中点画圆函数
{int x, y, p;x = 0; y = r; p = 1 - r;while (x <= y) {putpixel(c.x, c.y, x, y);if (p < 0) {p += 2 * x + 1;}else {p += 2 * (x - y) + 1;y--;}x++;}
}
void pieChart(void)
{scrPt circCtr, piePt;GLint radius = winWidth / 4; // Circle radius.GLdouble sliceAngle, previousSliceAngle = 0.0;GLint k, nSlices = 12; // Number of slices.GLfloat dataValues[12] = { 10.0, 7.0, 13.0, 5.0, 13.0, 14.0, 3.0, 16.0, 5.0, 3.0, 17.0, 8.0 };GLfloat dataSum = 0.0;circCtr.x = winWidth / 2; // Circle center position.circCtr.y = winHeight / 2;circleMidpoint(circCtr, radius); // Call a midpoint circle-plot routine.for (k = 0; k < nSlices; k++)dataSum += dataValues[k];for (k = 0; k < nSlices; k++) {sliceAngle = twoPi * dataValues[k] / dataSum + previousSliceAngle;piePt.x = circCtr.x + radius * cos(sliceAngle);piePt.y = circCtr.y + radius * sin(sliceAngle);glBegin(GL_LINES);glVertex2i(circCtr.x, circCtr.y);glVertex2i(piePt.x, piePt.y);glEnd();previousSliceAngle = sliceAngle;}
}void displayFcn(void)
{glClear(GL_COLOR_BUFFER_BIT); // Clear display window.glColor3f(0.0, 0.0, 1.0); // Set circle color to blue.pieChart();glFlush();
}void winReshpeFcn(GLint newWidth, GLint newHeight)
{glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, GLdouble(newWidth), 0.0, GLdouble(newHeight));glClear(GL_COLOR_BUFFER_BIT);/* Reset display-window size parameters. */winWidth = newWidth;winHeight = newHeight;
}void main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(winWidth,winHeight);glutCreateWindow("Pie Chart");init();glutDisplayFunc(displayFcn);glutReshapeFunc(winReshpeFcn);glutMainLoop();
}
相关文章:
circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。
以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义…...
RKNN模型评估-性能评估和内存评估
基于Python的模型评估 perf_debug:进行性能评估时是否开启debug 模式。在 debug 模式下,可以获取到每一层的运行时间,否则只能获取模型运行的总时间。默认值为 False。 eval_mem: 是否进入内存评估模式。进入内存评估模式后,可以…...
window mysql-8.0.34 zip解压包安装
window系统上安装mysql8 解压版 下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip安装 用解压软件解压刚下载的mysql-8.0.34-winx64.zip 的文件至d:\devs路径下。 创建配置文件my.ini到路径d:\devs\mysql-8.0.34-winx64下 [mysqld] # 设置…...
Mysql判断某个数据库中是否包含某个表,与pymysql工具函数
查看某个数据库中的全部表: SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名因此查看某个库中的某个表可以使用: SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名 AND table_name 表…...
快速掌握正则表达式
文章目录 限定符 Qualifier第一个常用限定符 ?第二个常用限定符 *第三个常用限定符 或运算符字符类元字符 Meta-characters\d 数字字符\w 单词字符空白符 \s.任意字符^ $ 行首行尾 贪婪与懒惰匹配 Greedy vs Lazy Match实例 1 :RGB颜色匹配实例 2 &…...
git: ‘lfs‘ is not a git command unclear
首先可以尝试 git lfs install 是否可以,不可以后就看这个连接:https://stackoverflow.com/questions/48734119/git-lfs-is-not-a-git-command-unclear。 我的是ubuntu,所以: 保证这个前提: git-lfs requires git ve…...
代码随想录--哈希--两个数组的交集
题意:给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 import java.util.ArrayList; import java.util.HashMap; import java.util.List;public class SSS {public …...
基于腾讯文档进行应届生个人求职记录
1. 新建一个腾讯文档 电脑登录QQ,点击“腾讯文档”功能键。 2. 可以选择下载客户端,也可以直接进入网页版。(本人使用网页版) 3. 点击新建,选择在线表格。 4. 编辑表名,表内容。 5. 设置文档权限…...
计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)
图像分类 教程博客_传送门链接:链接 在本教程中,您将学习如何使用迁移学习训练卷积神经网络以进行图像分类。您可以在 cs231n 上阅读有关迁移学习的更多信息。 本文主要目的是教会你如何自己搭建分类模型,耐心看完,相信会有很大收获。废话不…...
(18)线程的实例认识:线程的控制,暂停,继续,停止,线程相互控制,协作
话不多,但比较中肯,本文参照c# 线程暂停继续的实现方式_哔哩哔哩_bilibili 一、老方式 1、这是一个老的实现方式,基本不推荐,背后控制的原理需要了解。 界面:三个button一个textbox …...
c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入
c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 功能介绍代码案例输出结果封装扩展方法控制台调用 其他方法地址 功能介绍 1. 输入的数字是整数,则直接返回整数部分的字符串表示。 2. 如果输入的数字是小数,则执行…...
大数据精准营销大数据平台应用场景有哪些,平台优势有哪些?
精准营销大数据平台应用场景有很多种,比如在银行领域,我通过相应的客户数据,也可以给客户推广一些银行业务。还可以运用于证券行业,除此之外还可以运用于保险或者信托行业,借助精准营销大数据平台可以进行主动营销。那…...
Pyspark案例综合(数据计算)
数据计算 map方法 map算子 map算子(成员方法)接受一个处理函数,可用lambda快速编写,对RDD内的元素一一处理,返回RDD对象 链式调用 对于返回值是新的RDD的算子,可以通过链式调用的方式多次调用算子 &q…...
电路电子技术1--关联参考方向及功率的计算
1.判断 电流由元件的低点位端流向高电位端的参考方向称为关联参考方向。() 考点:电流、电压的参考方向 解释:在一些复杂的电路中,往往不能预先确定某段电路上的电流、电压的实际方向,所以引进了 “关联参考方向”。为了能够解决问…...
【C++】AVL树的插入操作实现以及验证是否正确(带平衡因子)
文章目录 前言一、AVL树结点的定义二、AVL树的插入(Insert)插入完整代码:1.左单旋(RotateL)2.右单旋(RotateR)3.先右单旋再左单旋(RotateRL)1.保存的bf为02.保存的bf为13…...
【Linux-Day10-信号量,共享内存,消息队列】
信号量 信号量描述 信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目,获取资源 时,需要对信号量的值进行原子减一,该操作被称为 P 操作。 当信号量值为 0 时,代表没有资源可用,P 操作…...
使用IntelliJ IDEA本地启动调试Flink流计算工程的2个异常解决
记录:471 场景:使用IntelliJ IDEA本地启动调试Flink流计算时,报错一:加载DataStream报错java.lang.ClassNotFoundException。报错二:No ExecutorFactory found to execute the application。 版本:JDK 1.…...
对象及日期对象
对象 1.什么是对象 类是对象的抽象,对象是类的实例 程序算法数据结构 万物皆对象,对象是一个具体的事物,看到见摸得着,对象是一组无序相关属性和方法的集合(无序,所以对象没有length属性),所有事物都是对象,列如字符串,数值,数组,函数等. 属性:事物的特征,在对象中用属性表…...
鼠标滚轮编码器解析
文章目录 前言一、鼠标滚轮编码器逻辑?二、使用步骤 1.引入库2.读入数据总结 前言 鼠标滚轮编码器为三脚接入,一个COM脚C(一般是接地),两个脉冲波形输入脚A、B,转动滚轮编码器会在两个脉冲输入脚上产生脉冲…...
【PTA】攀拓(PAT)- 程序设计(甲级)2023年春季考试
个人学习记录,代码难免不尽人意。 今天又斥资买了今年春季的真题一试,呃,感觉尽力了,89分,在当年排名23,感觉还不错,没有出现读不懂的题目和没有思路的情况,扣的11分分别是第二题两个…...
OpenZeppelin AccessControl 合约核心总结与单元测试
文章目录前言OpenZeppelin AccessControl 合约核心总结与单元测试1. AccessControl 是什么2. AccessControl 合约关键方法3. AccessControl 合约单元测试前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊…...
Web安全入门:5分钟搞懂XSS漏洞与重定向漏洞的区别及防御方法
Web安全入门:XSS漏洞与重定向漏洞的本质区别及实战防御指南 刚接触Web安全的新手常被各种漏洞类型搞得晕头转向,尤其是XSS和重定向漏洞,表面看起来都与"跳转"相关,实则存在根本性差异。去年某电商平台就曾因混淆这两种漏…...
OFA-VE系统模型蒸馏实战教程
OFA-VE系统模型蒸馏实战教程 1. 引言 你是否遇到过这样的情况:好不容易训练好的OFA-VE视觉蕴含分析模型,效果确实不错,但模型太大、推理太慢,根本没法在边缘设备上实际使用?或者想要在手机、嵌入式设备上部署&#x…...
杰理之立体声利用数字音量节点实现左右声道平衡【篇】
利用数字音量通过dB转换,去设置LR声道的数据大小,实现LR声道数据幅值不同达到声道平衡的目的,适配用户人耳情况...
Linux服务器磁盘占用分析和清理
话不多说,直接上代码一、问题分析与诊断1. 查看整体磁盘使用情况代码语言:javascriptAI代码解释# 查看所有挂载点的磁盘使用情况 df -h# 以更易读的方式显示,按使用率排序 df -hT | sort -k6 -rh# 查看inode使用情况(有时文件数太…...
MCGS配方功能学习
MCGS配方使用与一般触摸屏(例如西门子触摸屏)等不太一样,今天通过MCGS系统帮助手册,利用里面的脚本介绍,组态了MCGS配方的使用方法,通过脚本实现,确实比较灵活。...
管理者不做什么比做什么更重要
1. 不做管理上的极端派 “严格”与“宽容”之间找到平衡点:对事要严,对人要宽。 既要有原则、有底线,对错误坚决纠正,对工作严格要求;也要有人情味、有温度,体谅下属的难处,关心下属的成长 2.…...
铺布机在服装厂不同裁剪方式中的配套应用与工艺衔接
服装厂的裁剪方式多种多样,从传统的手工电剪到现代化的自动裁剪机,每种裁剪方式对铺布工序的要求各不相同。铺布机与裁剪方式的配套衔接,直接影响裁剪单元的整体效率和裁片质量。本文从裁剪方式角度,探讨铺布机在不同裁剪场景中的…...
欧盟小额包裹监管趋严低客单模式如何调整才能不亏
新规下的生存之道:跨境小包模式转型指南 近年来,随着全球电子商务的蓬勃发展,跨境小额包裹贸易成为许多中小卖家的主要业务模式。然而,欧盟海关监管政策的持续收紧,正在对这一传统模式构成严峻挑战。增值税࿰…...
指纹浏览器为什么要自建IP检测?基于IP数据云离线库的架构实践
一、为什么指纹浏览器必须自建IP检测? 2026年,亚马逊、Temu等平台的风控已从“指纹识别”升级到“IP信誉优先”。一个被标记为“数据中心”或“高代理风险”的IP,即使浏览器指纹伪装得再完美,也会在登录瞬间被判定为“非自然人操…...
