建议你看看J2SDK自带的演示例子!!

解决方案 »

  1.   

    我知道同时画三个矩形可以实现,问题是现在我想把它单独做成一个图形,继承自Shape,可以调用Graphics2D的draw(Shape shape)方法来绘制它。
      

  2.   

    写一个类,有一个方法draw(int shape);假设shap=1,画长方体画长方体其实是画柱状图的一个常用方法
    就是不停的画长方形,然后每个长方形的位置都在上一个长方形的上面一点
    这样很多重叠起来就是长方体了不知道楼主懂了没有
    我表达地不好
      

  3.   

    我知道同时画三个矩形可以实现,问题是现在我想把它单独做成一个图形,继承自Shape,可以调用Graphics2D的draw(Shape shape)方法来绘制它。不管你怎么画他,这个draw方法都得你自己实现阿。
      

  4.   

    你的这个问题没有你想的那么简单,涉及到2D对象的问题,不过我没做过2D对象,我做过3D 对象,如果你要画立方体,那么应该是3D对象的问题.具体的源程序太长了,贴不下,我把思想告诉你吧.
    需要的类 :(当然,这些类是自己写的,这里只是我的结构,你也可以不这么写)Vector3D  //3D向量,封装一些基本的向量计算,相加,相减, 点积,叉积,数乘等等
    Polygon3D //多边形(自己来确保其各个定点在同一个平面内),封装一个 Vector3D[] 数组,实现旋转,求法向量,和transform(这个词翻译过来味道不对) 操作.
    ViewWindow //视窗,负责空间坐标系和显示器坐标系的变换,包括投影计算//流程
    1.生成一个有8顶点的 Vector3D[] 数组(就是正方体的8个顶点
    2.利用这8个顶点生成6个Polygo3D (尽量按照左手系或者右手系排列顶点,这样方便以后进一步开发)
    3.生成一个和窗口一样大的ViewWindow
    4.循环:
      0)生成一个空的 GeneralPath path
      1)把Polygon3D 投影到ViewWindow
      2)把投影好的顶点加入到path当中
      3)g.draw(path)
    //循环直到6个面都画到窗口上.到这里,你的问题已经解决.
    不过会有一个问题,立方体的前面和后面都画出来了,不对.
    这里需要这样进一步改进:(消除背面)1.对每一个Polygon3D (polygon 是多边形的意思) 求法向量
    2.用 Polygon3D 上的一个顶点减去观察点向量,得到一个 v
    3.用法向量和 v 求点积,点积小于0 ,说明多边形背对你,则不绘制,在循环里 continue
    (我用的是右手系统)这样,背面就被消掉了.这些方法都是比较经典的空间解析几何问题,建议复习一下大一的高数~~
      

  5.   

    你也可以用极坐标系统,同样比较方便,只要修改一下 ViewWindow 的转换算法就可以了.
    在飞行模拟这样的系统当中,用极坐标应该会方便一些,极坐标对纹理贴图也比较好计算,不过有点不太好想,目前的建模工具都是生成笛卡儿坐标的模型,所以大家都还是用笛卡儿坐标.