两个问题:1、给出几个坐标点,如何绘制平滑曲线? 2、如何用程序把单帧图片变成视频文件?

ljk02079 2005-12-26 10:40:12
1、给出几个坐标点,如何绘制平滑曲线?
只要平滑就行,最好我的程序能知道曲线的各个点,因为这个曲线我还有其他用途。

2、如何用程序把单帧图片变成视频文件?
这里要求用程序,而不是视频处理元件
有好多图片,最好能压缩一下,要不可能播放不了

我是个新手 刚来的 我已经帮助过两个人 还得了20分呢
希望大家互相帮助一下 元旦快乐呀
...全文
969 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljk02079 2006-01-04
  • 打赏
  • 举报
回复
含恨结贴
IamDeane 2005-12-28
  • 打赏
  • 举报
回复
主要是分少啊,所以第二个问题没人答啊
借用 jiangsheng(蒋晟.Net) 那句 2 你可以用Windows AVI开头的那堆API来写AVI,也可以用Windows Media Format SDK来写WMV文件。你可以下载Windows Media Format SDK看看啊,你的英文最好过关
ljk02079 2005-12-28
  • 打赏
  • 举报
回复
当当当当 楼主出场
只见场上白光一闪,喀嚓一声,闪现一位帅哥。
黑盔 黑甲 黑抢 黑马 白衬衣 白衬裤 白袜子 白内酷
身高8尺 腰围也是8尺
低身躲过一个烂柿子 对大家抱拳说道:

射大哥:你的网站我看了,看来费了不少的功夫,内容也挺丰富的,我想问一句,定期更新吗

人一定要靠自己:真恨我自己怎么没早点遇见你,能把插值算法计算和最小二乘法的数学模型给 我描述一下吗

闭关失败,走火入魔,开关拉:你名字太长了,就教你小闭吧,月圆之夜,公主坟央视一号演播大厅,旁边小酒馆,我们痛饮一番,你看怎样

哈哈:敢问这位壮士,从何而来,到那里去

没想好名字:给你两个任务,1、想好名字 2、去找两个高人帮忙关注一下第2个问题好吗






bihai123 2005-12-27
  • 打赏
  • 举报
回复
期待图像的问题解决楼主来总结一下,呵呵
Oreo.M 2005-12-27
  • 打赏
  • 举报
回复
mark one
ljk02079 2005-12-27
  • 打赏
  • 举报
回复
谢谢大家的回答(掌声)
下面我对第一个问题作一个简单的小结
首先,我荣幸的告诉大家第一个问题已经解决了(欢呼声)
我昨天忙活了一整天,总算是解决了
我也是刚刚整理出来一个眉目,不敢独享
我们来看一下我提的这个问题,“1、给出几个坐标点,如何绘制平滑曲线? 只要平滑就行,最好我的程序能知道曲线的各个点”
这个问题有两点要求:
1、给出几个坐标点,如何绘制平滑曲线
2、要求能够反算,简单点说就是我给出任何一个x坐标要求能够给出对应曲线上的y值(我也不知道术语是什么)
如果我的要求只有第一点,那么上面各位朋友告诉我的都没有问题。但是大家都没有考虑问题的第二点,无论是蒋晟兄的NURBS曲面对象,还是VBToy同志的画Bezie曲线函数,都是能把曲线画出来,而不能进行反算。
要想解决第二点我觉得没有什么办法,只有自己动手把曲线画出来,因为只有曲线是自己画的,曲线上的各个点你才能知道。
所以我又上网搜索曲线的画法,我找到了两种,三次bezier曲线和样条插值曲线,这两种曲线有一定的差别,我只知道一点,就是对于bezier曲线刚开始给出的几点坐标只是控制点,而对于样条插值曲线那几点坐标是通过点(估计专业的朋友看到我写的非要骂死我不可)。因此我选择了样条插值曲线来画我的曲线。
问题解决了,但是颇有感慨。
1、在上学的时候我以为书本上的东西没有用,整天骂教委的人,现在才发现当学到一定程度之后,什么vb、vc都不是那么重要了,说白了它们都只是工具而已,就好比我这个问题其实是一个数学问题,认你vb在怎么精通也没有用。一句话,如果计算机不和相关行业联系起来,就是狗屁。
2、一直以来,我们大家都是在使用老盖提供给我们的东西进行编程,久而久之大家都养成了一个习惯,就是人家提供什么,我们用什么。人家用传说中的一句封装就把大家弄的一点脾气都没有了,我也是这样,只要知道这api函数的功能是什么就行了,至于他是怎么实现的关我屁事。大家不觉得很可怕吗?
奶奶个熊的,管我什么事,老子上一天班拿一份钱,人生苦短,来来来,喝 喝...



aiur2000 2005-12-27
  • 打赏
  • 举报
回复
奶奶个熊的,管我什么事,老子上一天班拿一份钱,人生苦短,来来来,喝 喝...

喜欢这句,吼吼
laviewpbt 2005-12-27
  • 打赏
  • 举报
回复
我也作过相关的曲线绘制操作,只有十来个点,要求绘制出平滑的曲线,一种方法就是用插值算法计算出一些中间点,或者用最小二乘法算出其表达式。然后增加一些中间点。其实也很简单的。
射天狼 2005-12-27
  • 打赏
  • 举报
回复
曲线画比较容易,转换成视频就比较麻烦了。

我的网站上有一个画类似任务管理器中CPU繁忙程度的曲线图。你可以看看。

VB资料->查询“画曲线图”;

==========================
免费的学习、交流、源码、工具下载网站,欢迎大家访问!
http://www.j2soft.cn/
VBToy 2005-12-26
  • 打赏
  • 举报
回复
第一个问题可以用以下API:
Private Declare Function PolyBezier Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
蒋晟 2005-12-26
  • 打赏
  • 举报
回复
http://www.jcwcn.com/html/C++/02_09_09_896.htm

Graphics graphics( pDC->m_hDC );

Pen pen(Color::Blue, 3);
Point point1( 50, 200);
Point point2(100, 150);
Point point3(160, 180);
Point point4(200, 200);
Point point5(230, 150);
Point point6(220, 50);
Point point7(190, 70);
Point point8(130, 220);

Point curvePoints[8] = {point1, point2, point3, point4,
point5, point6, point7, point8};
Point* pcurvePoints = curvePoints;

GraphicsPath path;
path.AddClosedCurve(curvePoints, 8, 0.5);

PathGradientBrush pthGrBrush(&path);
pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));
Color colors[] = {Color(0, 0, 0, 255)};
INT count = 1;
pthGrBrush.SetSurroundColors(colors, &count);

graphics.DrawClosedCurve(&pen, curvePoints, 8, 0.5);
graphics.FillPath(&pthGrBrush, &path);


http://www.programfan.com/article/showarticle.asp?id=2649
GLfloat ctlpoints[4][4][3]; // 控制点的存储空间
GLUnurbsObj *theNurb; // 指向NURBS曲面对象的指针
void InitSurface()
{
 int u, v;
 for (u = 0; u < 4; u++) {
  for (v = 0; v < 4; v++) {
   ctlpoints[u][v][0] = 2.0 * ((GLfloat)u - 1.5);
   ctlpoints[u][v][1] = 2.0 * ((GLfloat)v - 1.5);
   if ((u == 1 || u == 2) && (v == 1 || v == 2)) ctlpoints[u][v][2] = 6;
   else ctlpoints[u][v][2] = -6;
  }
 }
}
void Init(void)
{
 GLfloat mat_diffuse[] = {0.8, 0.6, 0.3, 1.0}; // 定义曲面材质
 GLfloat mat_specular[] = {0.8, 0.6, 0.3, 1.0};
 GLfloat mat_shininess[] = {45.0};
 glClearColor(0.0, 0.0, 0.0, 1.0);
 glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
 glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
 glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
 glEnable(GL_LIGHTING);
 glEnable(GL_LIGHT0);
 glDepthFunc(GL_LESS);
 glEnable(GL_DEPTH_TEST);
 glEnable(GL_AUTO_NORMAL);
 glEnable(GL_NORMALIZE);
 InitSurface(); // 初始化控制点
 theNurb = gluNewNurbsRenderer(); // 创建一个NURBS曲面对象
 // 修改NURBS曲面对象的属性
 gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 5.0);
 gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);
}
void CALLBACK Display()
{
 GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; // NURBS曲面的控制向量
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清屏
 glPushMatrix(); // 入栈
 glRotatef(30.0, -1.0, 0.0, 0.0); // 旋转变换
 glScalef (0.5, 0.5, 0.5); // 缩放变换
 gluBeginSurface(theNurb); // 开始曲面绘制
 gluNurbsSurface(theNurb, 8, knots, 8, knots, 4 * 3, 3, &ctlpoints[0][0][0], 4, 4, GL_MAP2_VERTEX_3); // 定义曲面的数学模型,确定其形状
 gluEndSurface(theNurb); // 结束曲面绘制
 glPopMatrix(); // 出栈
 glFlush(); // 强制刷新
}
http://www.codeproject.com/bitmap/createmovie.asp
#include "QTMovieFile.h"
CQTMovieFile movFile;
OnCreate(){
InitGraphicsWorld(hBackDC,hBackBitmap);
}
OnPaint(){
hdc = BeginPaint(hWnd, &ps);
//...Drawing Code onto the hBackBitmap
EndPaint(hWnd, &ps);
movFile.AppendNewFrame();
}
ljk02079 2005-12-26
  • 打赏
  • 举报
回复
jiangsheng(蒋晟.Net)兄:
你好 谢谢你的回答 要文回答的好不好 好!精彩!你用最简短的语言表达了这么复杂的事情,其中可读性、逻辑性都很强,在下佩服,佩服,我想象中你一定是身穿披风,头带草帽,哦错了,是礼帽,的一个大侠,路见不平,八道香主。然后划下一个Z字,就消释在茫茫黑夜里。

最后我还有一句话想对你说,“我有点没听懂,你能在详细解释一下吗”
蒋晟 2005-12-26
  • 打赏
  • 举报
回复
1 去找本数值逼近的数看三次样条曲线怎么画
2 你可以用Windows AVI开头的那堆API来写AVI,也可以用Windows Media Format SDK来写WMV文件。

808

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧