使用C语言绘制变换前与变换后的三角形图形——变换矩阵

题目描述

将三角形P1P2P3(10,10、30,10、10,50)旋转、平移和放大,计算变换矩阵,并用C语言编写一个程序、绘制变换前与变换后的三角形图形,其中,旋转角为60度;沿X、Y的平移量分别为30、50;放大系数a=d=2。

代码

#include<stdio.h>
#include<math.h>
#include<graphics.h> #需要注意graphics需要在网上自行下载
#include<conio.h>
#define PI 3.1415 
//该函数是为了将图像显示在左下角 
void myline(int x1, int y1,int x2,int y2)
{
    int ymax = getmaxy();
    y1 = ymax - y1;
    y2= ymax - y2;
    line(x1,y1,x2,y2);
}
int main()
{
    float degree = 60, x[3] = { 10,30,10 }, y[3] = { 10,10,50 };//x表示三角形的横坐标,y表示三角形的纵坐标,degree表示变换的角度
    float x1[3], y1[3];//x1表示变换后三角形的横坐标,y1表示变换后三角形的纵坐标
    int i;
    initgraph(700, 500);
    degree = degree * PI / 180;
    for (i = 0; i < 3; i++)
    {
        x1[i] = x[i] * 2 * cos(degree) - y[i] * 2 * sin(degree)-20*cos(degree)+ 20 * sin(degree) + 60;//用变换矩阵计算变换后三角形横坐标的计算
        y1[i] = x[i] * 2* sin(degree) + y[i] * 2 *cos(degree) - 20 * sin(degree) - 20 * cos(degree) +100;//用变换矩阵计算变换后三角形纵坐标的计算
    }
    //画出变化后的三角形
    myline(x1[0]+20, y1[0], x1[1]+20 , y1[1]);
    myline(x1[0] + 20, y1[0], x1[2] + 20, y1[2]);
    myline(x1[1] + 20, y1[1], x1[2] + 20, y1[2]);
    //换出原三角形
    myline(x[0] + 20, y[0], x[1] + 20, y[1]);
    myline(x[0] + 20, y[0], x[2] + 20, y[2]);
    myline(x[1] + 20, y[1], x[2] + 20, y[2]);
    _getch();

结果

在这里插入图片描述
本题考察的知识为图形的变换,一般包括:比例变换、对称变换、旋转变换、错切变换、平移变换。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值