- 14
- 0
- 约4.01千字
- 约 6页
- 2019-11-11 发布于安徽
- 举报
.
.
实验3:关于任意直线的对称变换
实验类型:验证、设计
所需时间:3学时
主要实验内容及要求:
对于任意直线的二维图形对称变化的实验,要求输入的直线是任意直线,直线的端点只能由键盘输入或者鼠标拾取,要做对称变换的图形也是一个任意图形(至少应是一个任意多边形)。
对称变换,先分析如何使用一系列简单变换来构造题目要求的复合变换。本体要实现的变换可以用如下一组变换组合来实现:
将直线任一点移至与坐标原点重合
将平移后的直线绕原点旋转至与某一坐标轴重合
将题目要求的对称变换转为实现已知图形关于上述坐标轴的对称变换
按逆序求上述 = 1 \* GB3 ①、 = 2 \* GB3 ②变换的逆变换
将上述矩阵依次相乘得到最终的复合变换矩阵
则某一多边形关于任意直线的对称变换就转变为将该多边形的各顶点与上述求得的复合变换进行矩阵乘法,求得变换后的新多边形的各个顶点坐标。
根据上述流程,编程实现,并测试程序功能。
源代码:
#includeiostream
#includegl/glut.h
using namespace std;
void Initial(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
}
class CPoint
{
public:
int x;
int y;
CPoint(){}
CPoint(int x1,int y1)
{
x=x1;
y=y1;
}
static CPoint ZeroMoveToXY(CPoint p, CPoint XY);//原始坐标向屏幕坐标XY的平移
static CPoint ToZero(CPoint p);//关于原点对称
static CPoint XYMoveToZero(CPoint p, CPoint XY);//XY坐标向屏幕坐标的平移
static CPoint Charge_AllLine(CPoint p, CPoint line_start, CPoint line_end);//关于Ax+By+C = 0对称
};
CPoint CPoint::ZeroMoveToXY(CPoint p, CPoint XY)
{
//原始坐标向屏幕坐标XY的平移
CPoint result;
int change[3][3] = {{1,0,0},{0,1,0},{-XY.x,-XY.y,1}};
int p1[3] = {0,0,0};
for (int j = 0;j 3;j++)
{
p1[j]=p.x * change[0][j] + p.y * change[1][j] + change[2][j];
}
result.x = p1[0];
result.y = p1[1];
return result;
}
CPoint CPoint::ToZero(CPoint p)
{
//关于原点对称
CPoint result;
int change[3][3] = {{-1,0,0},{0,-1,0},{0,0,1}};
int p1[3] = {0,0,0};
for (int j = 0;j 3;j++)
{
p1[j]=p.x * change[0][j] + p.y * change[1][j] + change[2][j];
}
result.x = p1[0];
result.y = p1[1];
return result;
}
CPoint CPoint::XYMoveToZero(CPoint p, CPoint XY)
{
//XY坐标向屏幕坐标的平移
CPoint result;
int change[3][3] = {{1,0,0},{0,1,0},{XY.x,XY.y,1}};
int p1[3] = {0,0,0};
for (int j = 0;j 3;j++)
{
p1[j]=p.x * change[0][j] + p.y * change[1][j] + change[2][j];
}
result.x = p1[0];
result.y = p1[1];
return result;
}
CPoint CPoint::Charge_AllLine(CPoint p, CPoint line_start, CPoint line_end)
{//关于Ax+By+C = 0对称
double A,B,C;
if(line_start.x
您可能关注的文档
- 咬文嚼字(很好的教案).doc
- 夜景人像拍摄技巧.doc
- 医疗器械注册证.doc
- 医疗卫生大变迁.doc
- 园林工程课程复习思考题.doc
- 园林基础知识解析.doc
- 员工大会主持流程.doc
- 圆的认识一教学反思.doc
- 圆明园园史讲解提要.doc
- 增强党员意识加强党性锻炼提高党员素质.doc
- 2026届河南省郑州市高三上学期一模政治(解析版).docx
- 2026届河南省郑州市高三上学期第一次质量预测历史(原卷版).docx
- 2026届河北省名校联合体高三上学期一模政治(原卷版).docx
- 广东省茂名市信宜市2025-2026学年高二上学期11月期中考试政治(原卷版).docx
- 2026年高一上学期语文期末考试压轴卷含答案.docx
- 河北省部分示范性高中2025-2026学年高一12月考试语文试题含答案.docx
- 考研真题 首都师范大学历史学院776历史学基础综合历年考研真题汇编(含部分答案).pdf
- 考研真题 首都师范大学文学院445汉语国际教育基础[专业硕士]历年考研真题汇编(含部分答案).pdf
- 《护士条例》 辅导讲座.pptx
- 牙科医师质控的年度工作述职.pptx
最近下载
- 校园足球教练资料(七):1v1能力——比赛的基础单元.pptx VIP
- 湖南省怀化市2024-2025学年高一上学期1月期末物理试卷(含答案).pdf VIP
- 全国职业院校技能大赛双数年 ZZ060 (母婴照护)赛题汇总 第1--10套.pdf
- 哈尔滨师范大学重点学术期刊名录.pdf VIP
- TZSESS 010-2024 有机废气治理 活性炭吸附装置技术规范.pdf
- 年度供应商审核计划表.xls VIP
- 《慢性胃炎基层诊疗指南(2025版)》要点.docx
- 石河子大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 石河子大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 石河子大学2022-2023学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
原创力文档

文档评论(0)