Graphics 版 (精华区)

发信人: jun (☆子夜☆), 信区: Graphics
标  题: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:09:20 1999), 转信

   请教各位OpenGL高手,

  如何用 OpenGL 显示有机分子的

  球棒模型?

  如甲烷分子是由五个球和四根棒

  连结在一起的。球的三维坐标和

  半径已知。整个分子应作为一个

  体系,以便进行旋转、缩放等操作。

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.99]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:10:07 1999), 转信

【 在 airforceone (Tata) 的大作中提到: 】
:    请教各位OpenGL高手,
:   如何用 OpenGL 显示有机分子的
:   球棒模型?
:   如甲烷分子是由五个球和四根棒
:   连结在一起的。球的三维坐标和
:   半径已知。整个分子应作为一个
:   体系,以便进行旋转、缩放等操作。


用OpenGL很容易实现。GLu中的函数有画球的函数,
自己实现画球的函数,用多边形拼接也很简单。

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.40.203]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:10:08 1999), 转信

【 在 airforceone (Tata) 的大作中提到: 】
:    请教各位OpenGL高手,
:   如何用 OpenGL 显示有机分子的
:   球棒模型?
:   如甲烷分子是由五个球和四根棒
:   连结在一起的。球的三维坐标和
:   半径已知。整个分子应作为一个
:   体系,以便进行旋转、缩放等操作。
You can use opengl's glu library to generate the cylinder and sphere,
and use display list to define a CH4 model. Then you can rotate and move 
the all models.

There are some examples in glut's package that simulate the solar system
maybe you can see it and get more idea.

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.68.238]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:10:56 1999), 转信

【 在 elnino (tony) 的大作中提到: 】
: You can use opengl's glu library to generate the cylinder and sphere,
: and use display list to define a CH4 model. Then you can rotate and move 
: the all models.
: There are some examples in glut's package that simulate the solar system
: maybe you can see it and get more idea.



  Thank you Tony!  Where can I find the examples? I only can use VC5.0
  to implement OpenGL operations. It seems I can not use the glu library
  though I can read the glu help in VC5.0 and use gl library. If you
  have  the source code of the examples and size is not more than 500K,
  Could you send to me by email(through attach Files)? My E-mail:
  caolx@pub.sioc.ac.cn.

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.99]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:11:44 1999), 转信

你老兄真有意思。你知道opengl的库组成吗?
glu库函数跟gl函数没什么区别的。
我给你一个生成球体的函数gluSphere(),你自己再去查详细的帮助文件。
不过,我对于旋转拉,之类的坐标变化,还是不清楚的。惭愧的要命。
其它的如gluCylinder();
都可以查到。

【 在 airforceone (Tata) 的大作中提到: 】
:   Thank you Tony!  Where can I find the examples? I only can use VC5.0
:   to implement OpenGL operations. It seems I can not use the glu library
:   though I can read the glu help in VC5.0 and use gl library. If you
:   have  the source code of the examples and size is not more than 500K,
:   Could you send to me by email(through attach Files)? My E-mail:
:   caolx@pub.sioc.ac.cn.


--
                              {~._.~}
                               ( Y )
                               l_T_|
                  闲来无事精华区,我辈岂是灌水人?

※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.33.119]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:12:38 1999), 转信

我曾上载过一些OpenGL的Sample,也许可以看看.
ftp.lib.pku.edu.cn/incoming/OpenGL Samples
202.120.6.34/incoming/OpenGL Sample

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.120.5.205]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:13:48 1999), 转信

【 在 airforceone (Tata) 的大作中提到: 】
:    请教各位OpenGL高手,
:   如何用 OpenGL 显示有机分子的
:   球棒模型?
:   如甲烷分子是由五个球和四根棒
:   连结在一起的。球的三维坐标和
:   半径已知。整个分子应作为一个
:   体系,以便进行旋转、缩放等操作。
其中:V3  是一个矢量类
      glywBand是自编的指定首尾两点以绘制一根棍的函数。
      opengl中矩阵是列序的,矩阵乘法由右至左。
void glywBand(V3 &p2, V3 &p1, float r, GLUquadricObj *obj)
{
   //important c array line firest
   //gl matrix row first
   //Rx make u to xz plan
   //Ry make u in xz plan to Z axis
   //u P2-P1 (a,b,c) |u|=d

   V3 v(0.0f,0.0f,0.0f);
   v.x=p2.x-p1.x;v.y=p2.y-p1.y;v.z=p2.z-p1.z;
   float a,b,c,d,h;
    d=sqrt(v.x*v.x+v.y*v.y+v.z*v.z);
    a=v.x/d;b=v.y/d;c=v.z/d;
    h=d;
    d=sqrt(a*a+b*b+c*c);
   float Rx[]={1,0,0,0,
             0,c/d,b/d,0,
               0,-b/d,c/d,0,
               0,0,0,1};
   float Ry[]={d,0,a,0,
               0,1,0,0,
               -a,0,d,0,
               0,0,0,1};
   float T[]={1,0,0,0,
              0,1,0,0,
              0,0,1,0,
              -p1.x,-p1.y,-p1.z};
   glPushMatrix();
   glMultMatrixf(T);
   glMultMatrixf(Rx);
   glMultMatrixf(Ry);
   gluCylinder(obj,r,r,h,10,5);
   glPopMatrix();
}
void __fastcall drawCH4(viod)
{
   V3 p0(0.0f,0.0f,0.0f),p1(0.5f,0.5f,0.5f),
      p2(-0.5f,0.5f,-0.5f),p3(0.5f,-0.5f,-0.5f),
      p4(-0.5f,-0.5f,0.5f);
   glColor3f(0.0,0.0,1.0);

   glPushMatrix();
   glRotatef(r,x,y,z);
     glywBand(p1,p0,0.05,obj);
     glywBand(p2,p0,0.05,obj);
     glywBand(p3,p0,0.05,obj);
     glywBand(p4,p0,0.05,obj);
     glutSolidSphere(0.2,10,10);
    glPushMatrix();
     glTranslatef(0.5,0.5,0.5);
     glutSolidSphere(0.2,10,10);
    glPopMatrix();
    glPushMatrix();
     glTranslatef(-0.5,0.5,-0.5);
     glutSolidSphere(0.2,10,10);
    glPopMatrix();
    glPushMatrix();
     glTranslatef(0.5,-0.5,-0.5);
     glutSolidSphere(0.2,10,10);
    glPopMatrix();
    glPushMatrix();
     glTranslatef(-0.5,-0.5,0.5);
     glutSolidSphere(0.2,10,10);
    glPopMatrix();
   glPopMatrix();

}

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.102.45.208]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:17:37 1999), 转信

【 在 airforceone (Tata) 的大作中提到: 】
:   Thank you pinxue (品雪).
:   But when I use the two funcations you provided, there are a
:  error when compiling. It said:
:   error C2065: 'glutSolidSphere' : undeclared identifier.
:  Could help me?
:   My Operation System: PWin98;
:    Tool: VC++5.0.

Oh, sorry,  glutSolidSphere是GLUT库中的一个绘制球体的函数,你用
VC的话可以改用auxSolidSphere
/*是glaux.lib提供的*/,当然得加上#include <gl/glaux.h>

或者仍用glut的话要:
1.下一个glutdll.zip并展开
2.将其中的glut*.dll拷到windows\system
3.copy glut*.lib \progra~1\devstu~1\vc\lib
   copy *.h \progra~1\devstu~1\vc\include\gl
4.在project->Setting-->Lib中加上glut.lib
5.在源文件中加入#include "gl/glut.h"

以上两种方法都要在setting里加上opengl32.lib glu32.lib 
还用一种方法就是用glu函数,略显复杂。
BTW,我不用VC,用BCB,所以可能说得不太清楚,见谅。

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.102.45.163]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
发信人: jun (☆子夜☆), 信区: Graphics
标  题: Re: 求救,OpenGL
发信站: 哈工大紫丁香 (Sat Jan  9 10:19:01 1999), 转信

【 在 airforceone (Tata) 的大作中提到: 】
:  Oh, I see. Thank you  pinxue. Thank you very much.
:  Now I can not get glutdll.zip. Could you E-mail it
:  to me (by attaching the zip File).
:  My E-mail: caolx@pub.sioc.ac.cn.

注意检查信箱,<200K。
我对你现在做的这个题目很感兴趣,可以说说吗?

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.102.29.228]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sunup.bbs@bbs.net.ts]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.493毫秒