求C++函数,生成B样条曲线子线段端点的坐标

作者&投稿:唱家 (若有异议请与网页底部的电邮联系)
C++ 求两点间的距离~

#include
#include
double s(double x,double y,double m,double n)
{
double h;
h=sqrt((x-m)*(x-m)+(y-n)*(y-n));
return h;
}
void main()
{
double a,b,c,d,p;
cout<<"请输入2个点的坐标:"<<endl;
cin>>a>>b>>c>>d;
p=s(a,b,c,d);
cout<<"距离为:"<<p<<endl;

}

#include
#include
using namespace std;
class Point
{
public:
Point(double xx, double yy)
{
x = xx;
y = yy;
};
void Getxy();
friend double Distance(Point &a, Point &b);
private:
double x, y;
};
void Point::Getxy()
{
cout << "(" << x << "," << y << ")" << endl;
}
double Distance(Point &a, Point &b)
{
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx*dx + dy*dy);
}
int main(void)
{
Point p1(3.0, 4.0), p2(6.0, 8.0);
p1.Getxy();
p2.Getxy();
double d = Distance(p1, p2);
cout << "Distance is" << d << endl;
return 0;
}
百度一下友元就有了

{ // Bezier曲线
TPoint p0,p1,p2,p3,p11,p22,pp0,pp1,pp2,pt11,pt22;
int i;
for(i = 0;i < cpfx-1;i++)
{
pt11 = pPfx[i];
pt22 = pPfx[i+1]
pp0 = pts[ptn-1];
pp1 = pt11;
pp2.x = (pt11.x + pt22.x)/2;
pp2.y = (pt11.y + pt22.y)/2;
p0 = pp0;
p1.x = pp0.x/3 + 2 * pp1.x/3;
p1.y = pp0.y/3 + 2 * pp1.y/3;
p2.x = 2 * pp1.x/3 + pp2.x/3;
p2.y = 2 * pp1.y/3 + pp2.y/3;
p3 = pp2;
//register float t;
for(float t = 0.0f;t <= 1.0f;t += 0.5f)
{
float x = (1-t)*(1-t)*(1-t)*p0.x+
3*t*(1-t)*(1-t)*p1.x+ 3*t*t
*(1-t)*p2.x + t*t*t*p3.x;
float y = (1-t)*(1-t)*(1-t)*p0.y
+ 3*t*(1-t)*(1-t)*p1.y+3
*t*t*(1-t)*p2.y + t*t*t*p3.y;
pts[ptn].x = x;
pts[ptn].y = y;
ptn++;
}
}
根据具体的使用环境调整,这是TTF字库显示用的。


...有没有什么公式或函数能自动生成b列或自动生成c列的剩余时间?_百 ...
B2公式为:=--TEXT(INT(A2+1)-A2,"[M]")说明1:TEXT得出的结果,不论是不是数字,都是文本型的。也就是说TEXT得出来的数字是文本型的数字,所以在TEXT的左边加负负号,进行负负运算后,就会得出数值型的数字。说明2:日期是整数,在日期中1指1天,即24小时。时间是小数,就是把1分成24份,...

c语言中如何随机生成一个运算符?
\/\/rand()函数生成0到32767之间的一个随机整数,用这个整数除以10,求余数,再加上1,产生的结果就是1到10之间的一个随机整数,赋值给变量a ch=cal[rand()%4];\/\/通过生成0到3之间的随机整数,来定位取出随机的运算符,赋值给字符变量ch b=rand()%10+1;\/\/生成1到10之间的一个随机整数,赋值...

C语言 随机函数
rand()是个函数,每次调用会给你返回一个unsigned int数,即无符号整数,具体这个函数可以百度百科rand(),返回的数用伪随机算法,在你看起来是随机变化的,范围在0~4294967295之间 是c++的整数运算符,如果写a%b就是求a除以b以后的余数 rand()生成的数大于0~100之间的范围,rand()%100就会生成在...

求:Excel函数,已知A列数值,怎么让B列和C列随机生成,且B和C列的数值之...
利用RANDBETWEEN函数可以完成,如下:在B2复制以下工式,向下拉即可 =RANDBETWEEN(1,A2)在C2复制 =A2-B2 3.不懂再追问

C语言随即函数
1.应该是加头文件”stdlib.h“2.举例 生成1个0到1的随机数 float b=rand()\/(RAND_MAX+1.0);printf("%f\\n",b);注释:stdlib.h头文件中有宏#define RAND_MAX 0x7fff rand()产生一个0到0x7ffff即0到32767之间的随机数 rand()\/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()...

在C语言中,一个函数一般由两个部分组成,它们是——和——
在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体。函数体是编程语言中定义一个函数功能的所有代码组成的整体。函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能。函数体内的前面是定义和说明部分,后面是语句部分。函数声明与函数体放在一起组成了函数定义。函数头是指...

如何使用函数在excle中生成两组随机数A和B,要求A大于B,且A-B小于固定...
在A列我们随机生成数字10-20的值,作为模拟说明 如下图所示:A2单元格内的值:=RANDBETWEEN(10,20)以上公式就是生成随机数10-20之间的数值,这个可以根据我们自己的需求去修改最小值和最大值。B2单元格的公式是:=RANDBETWEEN(A2-C2+1,A2-1)C2固定值为5,这个数值也是需要我们自己去设定,根据自己...

编写一个C程序,运行时输入a,b,c三个值,输出其中值最大者
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}

C语言随机函数怎样产生0-9互不相同的10个随机数
循环重写下,关键是你找到重复后重新生成的时候没有重新判定。for(i = 0;i < 10;++i){ a[i]= rand()%10;for(j = 0;j < i;++j){ if(a[i]== a[j]){ a[i]= rand()%10;j = -1;} } } 不过不停这么判定的话效率很低的。可以建立一个数组b[10]= {0,1,2,3,4,5,6...

EXCEL请解释这段函数=INDEX(C:C,SMALL(IF($B$1:$B$1000=$J$1,ROW...
2、small(a,b)取数组a中第b小的值。3、if(a,b,c)a为真取b值,a为假,取c值。4、row(A1)取a1的行号即1,往下拉变row(A2)=2,用这个的目的就是在公式下拉时产生一个序列数。5、&""数字转文本,在这里的作用是避免公式下拉超过最后一个可提取数据时在单元格内产生0。6、本公式为数组...

吴中区18426164471: 求C++函数,生成B样条曲线子线段端点的坐标 -
汪琬咳喘: { // Bezier曲线 TPoint p0,p1,p2,p3,p11,p22,pp0,pp1,pp2,pt11,pt22; int i; for(i = 0;i{ pt11 = pPfx[i]; pt22 = pPfx[i+1] pp0 = pts[ptn-1]; pp1 = pt11; pp2.x = (pt11.x + pt22.x)/2; pp2.y = (pt11.y + pt22.y)/2; p0 = pp0; p1.x = pp0.x/3 + 2 * pp1.x/3; p1.y = pp0.y...

吴中区18426164471: 求;B - 样条曲线的deboor算法和C++程序 -
汪琬咳喘: voidCGraph151View::seekPoint(intk)//表示k阶2{3CPoint *interim;//存储B样数组指针4CDC *pDC =GetDC();5CGraph151Doc *pDoc = GetDocument();//6intj = pDoc->Length-1;7intlength=1.0/0.001;//B样曲线的点的个数8interim =newCPoint[...

吴中区18426164471: 谁能给我一个c++下的n次B样条曲线的程序? -
汪琬咳喘: 基本思路:namespace sp//样条曲线曲面域名空间 {static double eps=1.0e-8;//精度//设定精度 void SetEps(double Eps) { if(Eps eps=Eps; } //获取精度 double GetEps() { return eps; } inline int MBiger(double a,double b)//判断a的绝对值是否比b...

吴中区18426164471: Matlab作图 样条曲线 -
汪琬咳喘: 三次B样条曲线的C实现 关键词: C++ 三次B样条曲线的C实现 三次B样条曲线是分段参数的多项式曲线结合起来的,亦用分段的形式去表现 建立[CD,PCD]的绘制空间 File→new→Project→MFC AppWizard[exe] →Singer→Finish 然后在...

吴中区18426164471: C/C++如何拟合样条线 -
汪琬咳喘: 一般用3次样条曲线:x(t) = ax*t^3 + bx*t^2 + cx*t + dx y(t) = ay*t^3 + by*t^2 + cy*t + dy z(t) = az*t^3 + bz*t^2 + cz*t + dz 构成 曲线参数方程 C(t) = a * t^3 + b * t^2 + c * t + d;0 常用 4 点 B样条.它的特点是 曲线 通过 1,4点,并由2,3点决定形状.连续画线时,第一次用 1,2,3,4 点,第二次用 2,3,4,5 点...VC++ 可以调 OpenGL 函数 直接画出.AutoCAD 等,也用 类似方法.

吴中区18426164471: 急!!求 C++ 、VC++ 、java 或 matlab 生成三次样条曲线的 源码 和 生成的截图 -
汪琬咳喘: 文件 - 新建 - 项目工程,文件 - 新建 - 文件建立C + +源文件,然后将代码复制进去,然后编译并运行就OK了

吴中区18426164471: C++里面有专门画B样条曲线的函数吗
汪琬咳喘: 貌似没有...

吴中区18426164471: 如何实现C++画曲线 -
汪琬咳喘: 绘制曲线:#include #include int main() { double y; int x,m; for(y=1;y>-1;y-=0.1) /*y为列方向,范围从1到-1,步长为0.1*/ { m=acos(y)*10; for(x=1;x cout cout for(;x cout cout } return 0; }

吴中区18426164471: 紧急!!! 如何用VC++绘制动态曲线?? -
汪琬咳喘: 这个需要考虑的方面比较多.曲线应该是B样条 ,GDI可以绘制PolyBezier 动态绘制,需要绘制当前曲线的时候同时删除上一次绘制的曲线,使用SetROP2(R2_NOT)来实现.满足坐标系,需要几个坐标系的变换,也就是输出定位,这点挺复杂,但是不难.不同分辨率,可以不考虑,如果要考虑用户视觉感受,需要用到dpi参数控制.

吴中区18426164471: 已知几个离散点XY坐标,如何用VC++将其拟合成光滑曲线 -
汪琬咳喘: 可以放在文件中.每次执行程序时打开指定文件(注意文件的路径一定要正确否则打开文件会出错)然后将文件中的数据读到内存中,你可以自己定义变量来保存这个数据.在MFC中是利用移动点MoveTo(int xpoint, int ypoint)和划线到LineTo(int xpoint, int ypoint)来实现点与点之间的互联的.如果你的点之间形成的轨迹是曲线,这样连出来的当然就是曲线.如果不是曲线.你可以先利用数学中的算法转化一下数据值然后再描点.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网