📜  计算机图形学反射

📅  最后修改于: 2020-12-20 09:46:38             🧑  作者: Mango

反射:

这是一个转换,生成对象的镜像。镜像可以是x轴或y轴。物体旋转180°。

反射类型:

  • 关于x轴的思考
  • 关于y轴的思考
  • 绕垂直于xy平面并通过原点的轴进行反射
  • 关于线y = x的思考

1.关于x轴的反射:可以借助以下矩阵围绕x轴反射对象。

在此变换中,x的值将保持不变,而y的值将变为负值。下图显示了对象轴的反射。该对象将位于x轴的另一侧。

2.关于y轴的反射:可以通过以下变换矩阵在y轴上反射对象。

在这里x的值将被反转,而y的值将保持不变。该对象将位于y轴的另一侧。

下图显示了关于y轴的反射

3.关于垂直于xy平面并通过原点的轴的反射:
在下面的转换矩阵中


x和y的值都将相反。这也称为绕原点旋转半圈。

4.关于线y = x的反射:可以在以下变换矩阵的帮助下,将对象绕线y = x反射


首先,将对象旋转45°。旋转方向为顺时针方向。之后,完成有关x轴的反射。最后一步是将y = x旋转回到其原始位置,即逆时针旋转45°。

示例:给出一个三角形ABC。 A,B,C的坐标为

A(3 4)
4)
="" 8)<="" b(6="" c(4="" p="">

查找三角形的反射位置,即到x轴的位置。

解:


反射后的a点坐标

反射后的b点坐标

反射后c点的坐标

(3,4)变成1 (3,-4)
b(6,4)变成b 1 (6,-4)
c(4,8)变成c 1 (4,-8)

用于对线执行镜像反射的程序:

#include 
#include 
#include 
#include 
#include 
#define pi 3.14
class arc
{
    float x[10],y[10],theta,ref[10][10],ang;
           float p[10][10],p1[10][10],x1[10],y1[10],xm,ym;
    int i,k,j,n;
    public:
    void get();
    void cal ();
    void map ();
    void graph ();
    void plot ();
    void plot1();
};
void arc::get ()
{
    cout<<"\n ENTER ANGLE OF LINE INCLINATION AND Y INTERCEPT";
    cin>> ang >> b;
    cout <<"\n ENTER NO OF VERTICES";
    cin >> n;
    cout <<"\n ENTER";
    for (i=0; i

输出:


>