关于离散曲线积分程序
哪里有离散曲线积分的源代码或者程序,最好能支持图形化界面。小弟急用,先谢谢了 问题点数:100、回复次数:41Top
1 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 01:00:56 得分 0
明天写…………Top
2 楼shidongdong(东东)回复于 2004-09-03 10:38:58 得分 0
您要是写好了,我把分全部给您,在另开一个帖子再送100,先谢谢您了,期待中Top
3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 12:22:01 得分 0
曲线是离散的??Bezier曲线不知道是不是你想要的…………还有就曲线的积分不就是曲面么??有点晕了…………Top
4 楼shidongdong(东东)回复于 2004-09-03 13:28:58 得分 0
曲线离散的意思是,曲线不是用一个函数解析式表示的,而是用离散的函数值表示的。
这里的曲线特指一元函数y=f(x)这种,程序里没有函数的的解析式,只有一个数组,里面存放的是(x1,y1),(x2,y2),...,这种形式的点,现在要求出曲线上每一个峰的面积。算法我大致知道,但是时间来不及了,想找个现成的图形化的源代码,实际上也就是想找的图形化的谱图的积分器。Top
5 楼zzwu(未名)回复于 2004-09-03 14:07:47 得分 70
曲线积分是指对定义在曲线上的一个函数f(x,y)沿曲线来作积分,你上面给出的一个数组(x1,y1),(x2,y2),...,只能代表一条曲线, 而没有给出定义在此曲线上每一点的函数值f(xi,yi), 就不知道要求什么了?Top
6 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 14:22:56 得分 30
#include <math.h>
#include "graphics.h"
void computeCoefficients (int n, int *c)
{
int k,i;
for (k=0;k<=n;k++){
c[k]=1;
for(i=n;i>=k;i--)
c[k]*=i;
for(i=n-k;i>=2;i--)
c[k]/=i;
}
}
to be continueTop
7 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-03 14:30:10 得分 0
void computePoint(float u,wcPt3 *pt,int nControls, wcPt3 * controls, int *c)
{
int k,n=nControls-1;
float blend;
pt->x=0.0;pt->y=0.0;pt->z=0.0;
for(k=0;k<nControls;k++){
blend=c[k]*powf(u,k)*powf(1-u,n-k);
pt->x+=controls[k].x*blend;
pt->y+=controls[k].y*blend;
pt->z+=controls[k].z*blend;
}
}
void bezier(wcPt3 *controls,int nControls, int m, WcPt3 *curve)
{
int *c=(int *)malloc(nControls *sezeof(int));
int i;
computeCoefficients(nControls-1,c);
for(i=0;i<=m;i++)
computePoint(i/(float)m,&curve[i],nControls,controls, c);
free(c);
}
Top
8 楼shidongdong(东东)回复于 2004-09-04 10:21:46 得分 0
请问兔子wcPt3是什么类型?Top
9 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-04 11:24:20 得分 0
偶也不清楚,可以帮你查查Top
10 楼zzwu(未名)回复于 2004-09-04 19:16:51 得分 0
wcPt3看来应该就是三维的点坐标(x,y,z)的结构数组.
bezier函数中还有2个未知的函数 computeCoefficients(),computePoint()
Top
11 楼shidongdong(东东)回复于 2004-09-05 15:29:04 得分 0
您写的这几段函数是干什么用的?Top
12 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-05 16:40:20 得分 0
显示曲线…………Top
13 楼zzwu(未名)回复于 2004-09-06 09:51:55 得分 0
但不是求积分啊!Top
14 楼NowCan(城市浪人)回复于 2004-09-07 13:14:07 得分 0
看来还是题目不清楚。
感觉上和zzwu理解的曲线积分不是一回事,而是数值积分。Top
15 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-07 15:45:39 得分 0
积分就是曲面的问题了,也可以啊,改进一下就是,需要就写Top
16 楼shidongdong(东东)回复于 2004-09-12 20:42:06 得分 0
有没有图形化操作的程序,不一定要有源代码,只要有这种软件就行Top
17 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-12 22:56:11 得分 0
solidworkTop
18 楼shidongdong(东东)回复于 2004-09-14 21:24:14 得分 0
创新的、易学易用的而且价格平宜的SolidWorks是Windows原创的三维设计软件。其易用和友好的界面,能够在整个产品设计的工作中,SolidWorks完全自动捕捉设计意图和引导设计修改。在SolidWorks的装配设计中可以直接参照已有的零件生成新的零件。不论设计用"自顶而下"方法还是"自底而上"的方法进行装配设计,SolidWorks都将以其易用的操作大幅度地提高设计的效率。SolidWorks有全面的零件实体建模功能,其丰富程度有时会出乎设计者的期望。用SolidWorks的标注和细节绘制工具,能快捷地生成完整的、符合实际产品表示的工程图纸。SolidWorks具有全相关的钣金设计能力。钣金件的设计即可以先设计立体的产品也可以先按平面展开图进行设计。SolidWorks软件提供完整的、免费的开发工具(API),用户可以用微软的VisualBasic、VisualC++或其它支持OLE的编程语言建立自己的应用方案。通过数据转换接口,SolidWorks可以很容易地将目前市场几乎所有的机械CAD软件集成到现在的设计环境中来。
好像和我的曲线积分问题不相关阿Top
19 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-14 21:52:39 得分 0
切,零件不就是曲线积分出来的曲面么??曲线的积分是什么??是曲面啊Top
20 楼shidongdong(东东)回复于 2004-09-16 16:26:24 得分 0
那这个软件可以直接导入一条曲线,然后后设定相关积分参数,再按照设定的参数进行积分么?Top
21 楼zzwu(未名)回复于 2004-09-24 13:16:05 得分 0
谁推荐你用 SolidWorks?Top
22 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-24 17:12:00 得分 0
当然是偶了,呵呵,那个不可以不过你说的这个我知道用什么可以了,MATLAB啊
对不起啊,solidwork是不知道你想干什么,就说了一个制作3D的东东,如果你需要形成曲面用MATLAB就好了Top
23 楼shidongdong(东东)回复于 2004-09-25 10:02:13 得分 0
各位可能理解错了我的意思,我现在有一个数组,里面装着一系列离散的点,这些点画在图上,就是一条由离散点构成的曲线,这个曲线上会有很多的峰,我现在需要有个图形化的软件,可以让操作者设定一些参数,然后积分求出符合参数的那些峰的面积,而不是整条曲线下面包含的面积。有没有这种软件或者控件?Top
24 楼zzwu(未名)回复于 2004-09-25 16:44:44 得分 0
"整条曲线下面包含的面积" -- 这就是普通的定积分了,当然不是曲线积分.
"这个曲线上会有很多的峰" -- 说明你的数值曲线是一元函数的图形.
但,"曲线上每一个峰的面积"就不知道是什么意思了:"峰"只出现在个别的点上,只能求它的高度,怎能求面积?Top
25 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-25 17:37:20 得分 0
我猜想是两个谷之间的距离乘上一个长度就是了,面积是这个距离上的曲线的积分就是了Top
26 楼zzwu(未名)回复于 2004-09-26 12:41:03 得分 0
"我现在有一个数组" 是一维的(a[x]型),还是2维的(a[x,y]型)?Top
27 楼zzwu(未名)回复于 2004-09-26 12:41:31 得分 0
举个例子.Top
28 楼shidongdong(东东)回复于 2004-09-27 09:23:38 得分 0
zzwu(未名) :数组是一维的,因为曲线就是一元函数,只不过这个函数使用离散的点表示的,无法用具体解析式表达。
我所说的峰面积就是指从峰底开始经过峰顶再到峰底这样一段曲线所包含的面积,求一条曲线中的峰面积涉及到怎样判断峰的开始,峰的结束的问题,相关参数需要用户指定,现在我需要的一个图形化的工具给用户使用,自己不想写了,太累了。各位如果还是有不理解的,可以到这里看看,上面有理论说明http://166.111.30.161:8000/zhongxin/yiqi/HPLC/knowledge/seputu.htm
当然它只是理论上说明,实际峰的形状不可能是一个这样规则的。Top
29 楼zzwu(未名)回复于 2004-09-29 22:01:23 得分 0
看了图就什么都清楚了!
虽然是离散的,但对横坐标的每一点,都定义了一个函数值.
这某种意义上也称为"连续的",因为还可以不对每一点定义函数值,这时就更不连续了.
Top
30 楼zzwu(未名)回复于 2004-09-29 22:04:44 得分 0
这样的问题看起来不难解决,但要真正实用,会出现不少问题的,有点繁琐.Top
31 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-29 22:14:08 得分 0
先要构造曲线就是了,呵呵,终于明白在说什么了,过几天我要写个VC的程序模拟这个的Top
32 楼zzwu(未名)回复于 2004-09-30 19:09:21 得分 0
例如,一个非常简单的例子,请你算一算:
|
| * **
| * ** **
+*--------*--
这里就要问,第1,2个峰的界线在何处?
又如:
** ** *
* * * * *
* * * *
* * * *
* * *
---------------------------
算几个峰?
Top
33 楼shidongdong(东东)回复于 2004-10-06 20:25:16 得分 0
这两种情况全部算两个峰,对于第一种情况,也可以根据用户设定的参数来决定时算一个峰还是算两个峰Top
34 楼shidongdong(东东)回复于 2004-10-14 10:48:55 得分 0
怎么没人管了?Top
35 楼zzwu(未名)回复于 2004-10-15 09:06:16 得分 0
"全部算两个峰"就有矛盾了:
如果算2个峰:
|
| * **
| * ** **
+*--------*--
则
** ** *
* * * * *
* * * *
* * * *
* * *
---------------------------
算几个峰?
则
** ** *
* * * * *
* * * *
* * * *
* * *
---------------------------
必须算3个峰了.因为你认为的第2个峰本身有2个峰.
Top
36 楼zzwu(未名)回复于 2004-10-15 09:09:11 得分 0
"全部算两个峰"就有矛盾了:
如果下面的算2个峰:
|
| * **
| * ** **
+*--------*--
则
** *
* * *
* *
* *
* *
---------------------------
自然也算2个峰,
由此
** ** *
* * * * *
* * * *
* * * *
* * *
---------------------------
必须算3个峰了!
Top
37 楼shidongdong(东东)回复于 2004-10-15 17:56:27 得分 0
可能是我表述不清楚,最早我说算2个峰是因为你没有把更大的峰画出来,总之,如果分裂比较大就算两个,比较小就算一个,这个根据用户设定的参数来判断。Top
38 楼Tranquillo(晚起的鸟儿找虫吃)回复于 2004-10-17 11:42:30 得分 0
楼主是做解谱的程序么?
Top
39 楼shidongdong(东东)回复于 2004-10-23 16:03:06 得分 0
不完全是,只是我最近在搞关于谱图数据分析和处理的研究,所以需要部分谱图的积分的程序Top
40 楼zzwu(未名)回复于 2004-10-23 17:25:36 得分 0
既然是根据用户设定的参数来判断,那应该就好办了吧?
Top
41 楼shidongdong(东东)回复于 2004-10-24 18:22:00 得分 0
怎么办呢?Top




