二维图形基本变换-c程序转换为java程序,最好用图形界面实现

问题描述

c程序转换为java程序,最好用图形界面实现

#include
#include
#define N 50

#define M 3.14159265

void erwei();
void sanwei();

void main()
{
int w;
printf("请输入是几维图形变换:二维(2)或三维(3): ");
scanf_s("%d", &w);
if(w == 2) erwei();
else if(w == 3) sanwei();
}

void erwei()
{
float a[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
int ii, k, h;
float b[N][2];
printf("请输入图形定点个数 : ");
scanf_s("%d", &k);
printf("请输入顶点坐标:n");
for (ii = 0; ii<k; ii++)
scanf_s("%f,%f", &b[ii][0], &b[ii][1]);
printf("请输入变换模式:比例(1),对称(2),错切(3),平移(4),旋转(5): ");
scanf_s("%d", &h);
if (h == 1)
{
int m, n;
printf("请输入比例因子(x,y): ");
scanf_s("%d,%d", &m, &n);
a[0][0] = m;
a[1][1] = n;
}
else if (h == 2)
{
int ch;
printf("请输入对称轴:x(1)或y(2): ");
scanf_s("%d", &ch);
if (ch == 1) a[1][1] = -1;
if (ch == 2) a[0][0] = -1;
}
else if (h == 3)
{
int r;
float f;
printf("请输入错切轴x(1)或y(2)和错切因子a(b): ");
scanf_s("%d,%f", &r, &f);
if (r == 1)
a[1][0] = f;
if (r == 2)
a[0][1] = f;
}
else if (h == 4)
{
float i, j;
printf("请输入平移坐标(x,y): ");
scanf_s("%f,%f", &i, &j);
a[2][0] = i; a[2][1] = j;
}
else if (h == 5)
{
float g;
printf("请输入旋转角度(度): ");
scanf_s("%f", &g);
g = M*g / 180;
a[0][0] = cos(g);
a[0][1] = sin(g);
a[1][0] = -sin(g);
a[1][1] = cos(g);
}
printf("经过变换后的坐标为:n");
for (ii = 0; ii<k; ii++)
printf("%.2f,%.2fn", b[ii][0] * a[0][0] + b[ii][1] * a[1][0] + a[2][0], b[ii][0] * a[0][1] + b[ii][1] * a[1][1] + a[2][1]);
}

void sanwei()
{
float a[4][4] = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
float c[N][3], x1, y1, z1; int h, q, jj;
printf("请输入三维图形的顶点个数: ");
scanf_s("%d", &q);
printf("请输入顶点坐标: n");
for (jj = 0; jj<q; jj++)
scanf_s("%f,%f,%f", &c[jj][0], &c[jj][1], &c[jj][2]);
printf("请输入变换模式:比例(1),对称(2),错切(3),平移(4),旋转(5): ");
scanf_s("%d", &h);
if (h == 1)
{
int l, m, n;
printf("请输入比例因子(x,y,z): ");
scanf_s("%d,%d,%d", &l, &m, &n);
a[0][0] = l;
a[1][1] = m;
a[2][2] = n;
}
else if (h == 2)
{
int ch;
printf("请输入对称面:xy(1),yz(2),zx(3): ");
scanf_s("%d", &ch);
if (ch == 1) a[2][2] = -1;
if (ch == 2) a[0][0] = -1;
if (ch == 3) a[1][1] = -1;
}
else if (h == 3)
{
int str;
float o, p;
printf("请输入错切面:xy(1),yz(2),zx(3): ");
scanf_s("%d", &str);
printf("请输入错切因子(a,b): ");
scanf_s("%f,%f", &o, &p);
if (str == 1) {
a[1][0] = o;
a[2][0] = p;
a[0][1] = o;
a[2][1] = p;
} if (str == 2)
{
a[0][1] = o;
a[2][1] = p;
a[0][2] = o;
a[1][2] = p;
} if (str == 3)
{
a[1][0] = o;
a[2][0] = p;
a[0][2] = o;
a[1][2] = p;
}
}
else if (h == 4)
{
float r, s, t;
printf("请输入平移坐标(x,y,z): ");
scanf_s("%f,%f,%f", &r, &s, &t);
a[3][0] = r;
a[3][1] = s;
a[3][2] = t;
}
else if (h == 5)
{
int e;
float du;
printf("请输入旋转轴,x轴(1),y轴(2),z轴(3): ");
scanf_s("%d", &e);
printf("请输入旋转角度(度): ");
scanf_s("%f", &du);
du = M*du / 180;
if (e == 1){
a[1][1] = cos(du);
a[2][1] = -sin(du);
a[1][2] = sin(du); a[2][2] = cos(du);
}
if (e == 2)
{
a[0][0] = cos(du);
a[2][0] = -sin(du);
a[0][2] = sin(du);
a[2][2] = cos(du);
}
if (e == 3)
{
a[0][0] = cos(du);
a[1][0] = -sin(du);
a[0][1] = sin(du);
a[1][1] = cos(du);
}
}
printf("经变换后坐标为:n");
for (jj = 0; jj<q; jj++)
{
x1 = c[jj][0] * a[0][0] + c[jj][1] * a[1][0] + c[jj][2] * a[2][0] + a[3][0];
y1 = c[jj][0] * a[0][1] + c[jj][1] * a[1][1] + c[jj][2] * a[2][1] + a[3][1];
z1 = c[jj][0] * a[0][2] + c[jj][1] * a[1][2] + c[jj][2] * a[2][2] + a[3][2];
printf("%.2f,%.2f,%.2fn", x1, y1, z1);
}
}

时间: 2024-09-20 10:43:50

二维图形基本变换-c程序转换为java程序,最好用图形界面实现的相关文章

二维码 实现-一扫描二维码就弹出一个应用程序安装界面,如何实现的

问题描述 一扫描二维码就弹出一个应用程序安装界面,如何实现的 有的二维码一扫描就会自动安装程序,有的会弹出安装界面,分别是怎么实现的? 解决方案 二维码包含的链接对于 android一般是直接定位apk下载,ios一般是指向app store应用页面 然后用户下载安装 解决方案二: 二维码扫描,扫描结果说白了就是一个字符串.这个字符串做什么用,看你的扫描程序,当然现在大部分是把它当做一个URL,去访问一个网页.如果这个是一个安装程序下载的URL,就会发生你所说的情况,已扫描就安装:如果这个安装程

设计一个小程序,将已有的asp程序转换为jsp程序

问题描述 设计一个小程序,将已有的asp程序转换为jsp程序 设计一个小程序,将已有的asp程序转换为jsp程序.运用java与web应用 解决方案 说得轻巧,"设计一个小程序",还"运用java与web应用".这是两种不同的技术,不但语言不同,而且类库也不同,就算用到"编译原理"也无济于事. 解决方案二: 这个跨度可有点大了. 解决方案三: 可以参考: <设计一个小程序,将windows转换为国有操作系统> 解决方案四: 这个比较麻

图片-二维码扫描的问题 java

问题描述 二维码扫描的问题 java 手机扫描二维码 没有跳转到我二维码嵌入的url ,成文本状态,我是用手机访问本地的服务(我嵌入的url) 解决方案 关键是你的二维码上不能有"测试二维码:"之类的多余字符,以及回车,必须是一个纯的url. 解决方案二: 解决方案三: 你的链接有两个问题,第一,它不是一个合法的url,冒号和斜杠必须转义.其次它访问的是一个私有网络的地址,手机访问localhost肯定是访问不到的.因为它是本地ip.你的手机上又没有网站. 解决方案四: 关于zxing

Java生成名片式的二维码源码分享

世界上25%的人都有拖延症--但我觉得这统计肯定少了,至少我就是一名拖延症患者.一直想把"Java生成名片式(带有背景图片.用户网络头像.用户昵称)的二维码"这篇博客分享出来,但一直拖啊拖,拖到现在,真应了苏格兰的那句谚语--"什么时候都能做的事,往往什么时候都不会去做." 零.效果图 左上角为微信头像. 沉默王二是文字昵称. 附带URL为http://blog.csdn.net/qing_gee的二维码 还有指定的背景图. 使用场景: 点公众号的微信菜单"

java 二维码的生成与解析示例代码_java

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍. 2.  编码范围广 该条码可以把图片.声音.文字.签字.指纹等可以数字化的信息进行编码,用条码表示出来:可以表示多种语言文字:可表示图像数据. 3.  容错能力强,具有纠错功能 这使得二维条码因穿孔.污损等引起局部损坏时,照样可以正确

Java二维码登录流程实现代码(包含短地址生成,含部分代码)_java

近年来,二维码的使用越来越风生水起,笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活,所以研究了一下这一套机制,并用代码实现了整个流程,接下来就和大家聊聊二维码登录及的那些事儿. 二维码原理 二维码是微信搞起来的,当年微信扫码二维码登录网页微信的时候,感觉很神奇,然而,我们了解了它的原理,也就没那么神奇了.二维码实际上就是通过黑白的点阵包含了一个url请求信息.端上扫码,请求url,做对应的操作. 一般性扫码操作的原理 微信登录.支付宝扫码支付都是这个原理: 1. 请求二维码 桌面端向服务

利用java实现二维码和背景图的合并_java

背景介绍: 最近我们这边需要做一个自动生成二维码并且还要将二维码嵌入现有的背景模板中,一直又没写过这些方面的东西,突然写还真是有点迷糊,特别是对于java图片API并不很熟悉,所以参考了很多网友的分享,很快做出来了,现在分享一下 注意: 关于二维码的生成方式在文章java生成带logo的多彩二维码  已经写过了,大家可以合起来一起使用. 实例代码: BufferedImage image= bim;//二维码 BufferedImage bg= ImageIO.read(路径);//获取北京图片

java生成二维码的几种实现方便及实例

先我们来看一个直接用java代码生成二维码的实例. Java代码 package foo;       public class App {       public static void main(String[] args) {             String imgPath = "O:/erweima/fanglei@nannan.jpg";             String encoderContent = "Hello,world!";    

你不可错过的二维码生成与解析-java后台与前端js都有

1.二维码分类   二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种类型. 线性堆叠式二维码 编码原理: 建立在一维条码基础之上,按需要堆积成两行或多行. 图示: 矩阵式二维码 最常用编码,原理: 在一个矩形空间通过黑白像素在矩阵中的不同分布进行编码.在矩阵相应的位置上,用点(方点.圆点或其它形状)的出现表示二进制"1",点的不出现表示二进制的"0" 图示: 邮政码 通过不同长度的条进行编码,主要用于邮政编码. 2.QR Code   现在最常用的就是