矢量c编程
哦。难度不大,PS 本人数学还可以啦。哈哈,就是逆时针旋转后,3个坐标点已经超出了屏幕的显示范围:
我给楼主详细解释下吧:
大学线性代数里有坐标系统转换的。有了这个公式剩下的就是C绘图了。
知识点1:平面上一点X1,Y1,绕一点P(x0,y0)旋转任意角度A后,新坐标(X2,Y2)的计算公式入下:
x2=(y1-y0)*sina°+(x1-x0)*cosa°
y2=(y1-y0)*cosa°-(x1-x0)*sina°
知识点2:如果C语言绘图模式无法显示你的坐标。屏幕做左上角是0,0,那么你可以讲你的坐标系移动到一个相对位置,这个就是moverel(x,y)函数。
我的代码移动了200,200,这样你旋转后的新三角形式可以显示的。
知识点3:sin函数和cos函数的应用。里面的参数要把角度换成弧度制
角度*3.1415926/180
花了点时间给你写了一个,代码敲的辛苦啊。很多年不用C了。
代码如下:
#include<graphics.h>
#include<math.h>
#define PI 3.1415926
void changZuoBiao(double x1,double y1,double px,double py,double angle,double a[2])
{
a[0]=(y1-py)*sin((double)(angle*PI/180.0))+(x1-px)*cos((double)(angle*PI/180.0));
a[1]=(y1-py)*cos((double)(angle*PI/180.0))-(x1-px)*sin((double)(angle*PI/180.0));
}
void main()
{
double aNew[2],bNew[2],cNew[2];/*¡ä?¡¤?D?¦Ì?¡Áa??o¨®¦Ì?¡Á?¡À¨º*/
double angle=-90;
int DetaX=200;
int driver,mode;
int i;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(2);
line(50+DetaX,50+DetaX,100+DetaX,50+DetaX);
line(50+DetaX,50+DetaX,50+DetaX,70+DetaX);
line(100+DetaX,50+DetaX,50+DetaX,70+DetaX);
changZuoBiao(50,50,20,30,angle,aNew);
changZuoBiao(50,70,20,30,angle,bNew);
changZuoBiao(100,50,20,30,angle,cNew);
line(aNew[0]+DetaX,aNew[1]+DetaX,bNew[0]+DetaX,bNew[1]+DetaX);
line(aNew[0]+DetaX,aNew[1]+DetaX,cNew[0]+DetaX,cNew[1]+DetaX);
line(bNew[0]+DetaX,bNew[1]+DetaX,cNew[0]+DetaX,cNew[1]+DetaX);
getch();
getch();
getch();
getch();
restorecrtmode();
}
代码的思路很清晰:
changZuoBiao(x1,y1,x2,y2,angle,a[2])
{
}
就是把x1,y1这一点绕x2,y2,旋转angle角度后的新坐标放在a[0]和a[1]中.
Dev-C++,TC2.0编译通过。
全屏模式不方便截图:图略
详细问题可以继续向我咨询。
代码敲的辛苦,楼主早日结题。祝福楼主好运!
⑵ 在C++中,矢量类和普通类有什么区别,有什么作用
字面上意思,矢量类(vector) 是向量,普通类 是标量。
数学物理知识告诉我们 向量 有大小,有方向(例如力,速度),标量 有大小,无方向(例如 温度,时间)。
c++ vector类是以数组为基础的的容器,提供具有连续内存地址的数据结构,可通过下标运算符[ ]直接有效地访问矢量的任何元素。与数组不同,vector的内存用尽时,vector自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。
普通类指 非 vector类,也不是 列表(list)和双端队列(deque)这些容器,而是平常我们惯用的 数组,结构,联合体 等等。例如 数组可以 用 malloc 动态分配大小,可以用realloc 动态扩充 或 减少存放单元大小,这需要程序员自己照料操作。
矢量类有自己所支持的迭代子类型,vector支持随机访问迭代子。
普通类 属于 c 语言,矢量类 属于 c++ 语言。c 的东西可以用于 c++。c++ 的东西不能用于 c。
⑶ 求大神帮忙写一个矢量加法的c语言程序。
一个向量用(x1,y1)表示,另外一个用(x2,y2)表示,和向量是(x1+y1,x2+y2)
如果你说已知两个向量的模和夹角,可以用余弦定理算和向量的长度,方向也可以通过正弦定理,余弦定理算,编程就不说了,太菜了。。。
⑷ C语言如何调用adobe illustrator的矢量图形
你需要有一个分析ullustrator文件的库函数,这个函数本身来说是自己开发的,也可以从现有的库里面寻找一下,不过难度比较大,现有的库大部分都是游戏的一部分,从不对外公开的。里面主要是对数据获取的获取,然后加载到程序中,库里面包含了对数据的分析和提取。希望你能找到这样的库。
⑸ C++怎样定义一个矢量类CVector
我随便添了点,不知道是不是这样的方式。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<malloc.h>
#include<iostream>
#include<vector>
using namespace std;
class CVector {
private:
float* p_val;
int size;
public:
CVector()
{
size=2345;
p_val=NULL;
}
CVector(int s)
{
size=s;
p_val=(float*)malloc(sizeof(float)*size);
memset(p_val,0,sizeof(float)*size);
}
CVector(const CVector &v)
{
p_val=(float*)malloc(sizeof(float)*v.size);
size=v.size;
for (int i=0;i<size;i++)
p_val[i]=v.p_val[i];
}
~CVector()
{
free(p_val);
}
CVector& operator = (const CVector &v) //赋值运算符重载
{
if (v.size>this->size)
this->p_val=(float*)realloc(this->p_val,sizeof(float)*v.size);
this->size=v.size;
for (int i=0;i<this->size;i++)
this->p_val[i]=v.p_val[i];
return *this;
}
float& operator[] (int ix) //下标运算符重载
{
return this->p_val[ix];
}
};
int main()
{
int i,j,k;
CVector go(4);
CVector hi(45);
go=hi;
CVector cur(hi);
return 0;
}
⑹ 编程语言中,哪些数据类型是标量,哪些是矢量,为什么呢
“常量”在程序运行时,不会被修改的量。换言之,常量虽然是为了硬件、软件、编程语言服务,但是它并不是因为硬件、软件、编程语言而引入。
常量区分为不同的类型,如25、0、-8为整形常量,6.8、-7.89为实型常量,‘a’‘b’为字符常量。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
⑺ C语言求向量的矢量积、模、单位向量、还有判断2个向量是否共线,在线等答案,酱油党麻烦让让
//很简单,你对照一下吧。。。#include <stdio.h>
#include <math.h>
void main()
{
int i,sum=0,p[3]={1,2,3},p1[3]={2,3,4},flag=1;
double model=0,model1=0,temp;
for(i=0;i<3;i++)
{sum+=p[i]*p1[i];
model+=p[i]*p[i];
model1+=p1[i]*p1[i];
}
model=sqrt(model);
model1=sqrt(model1);
printf("向量p,p1的积: %d\n",sum);
printf("p,p1的模为:%lf %lf\n",model,model1);
temp=p[0]/p1[0];
if((p[1]*1.0/p1[1]-temp>=1e-3) &&(p[2]*1.0/p1[2]-temp>=1e-3))
flag=0;
if(flag)
printf("两向量共线!");
else
printf("不共线");
}
⑻ 请教: 如何利用C语言实现两个矢量的相加,并获得相加后的幅值和角度 谢谢!
lllg45d3 是骗子。。。。。
两个网站都是乱七八糟的
⑼ 编写一个C语言程序
#include <stdio.h>
void Add(int *a,int *b,int *c,int n)
{
int i;
for(i=0;i<n;++i)
{
c[i]=a[i]+b[i];
}
}
void Mult(int *a,int *b,int *c,int n)
{
int i;
for(i=0;i<n;++i)
{
c[i]=a[i]*b[i];
}
}
int main()
{
int n,*a,*b,*c,i;
printf("输入矢量n:");
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*n);
b=(int *)malloc(sizeof(int)*n);
c=(int *)malloc(sizeof(int)*n);
printf("输入一位数组a:");
for(i=0;i<n;++i)
{
scanf("%d",a+i);
}
printf("输入一位数组b:");
for(i=0;i<n;++i)
{
scanf("%d",b+i);
}
printf("一维矢量相加为:");
Add(a,b,c,n);
for(i=0;i<n;++i)
{
printf("%d ",*(c+i));
}
printf(" 一维矢量相乘为:");
Mult(a,b,c,n);
for(i=0;i<n;++i)
{
printf("%d ",*(c+i));
}
return 0;
}
亲测
⑽ 430单片机中所有的C语言中断矢量变量名,哪位高手可以给总结一下
这是IAR头文件里的,你编程的时候就是按这个宏定义的名称编的
/************************************************************
* Interrupt Vectors (offset from 0xFFE0)
************************************************************/
#define PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */
#define USART1TX_VECTOR (2 * 2u) /* 0xFFE4 USART 1 Transmit */
#define USART1RX_VECTOR (3 * 2u) /* 0xFFE6 USART 1 Receive */
#define PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */
#define TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */
#define TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */
#define ADC12_VECTOR (7 * 2u) /* 0xFFEE ADC */
#define USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */
#define USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */
#define WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */
#define COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */
#define TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-6, TB */
#define TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */
#define NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskable */
#define RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */
#define UART1TX_VECTOR USART1TX_VECTOR
#define UART1RX_VECTOR USART1RX_VECTOR
#define UART0TX_VECTOR USART0TX_VECTOR
#define UART0RX_VECTOR USART0RX_VECTOR
#define ADC_VECTOR ADC12_VECTOR