⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometrycanvas.java

📁 使用JAVA实现的三维图形处理.可根据输入的曲线方程,如x^2+y^2+z^2=1表示为(1-(Y/50)^2+(Z/60)^2)^(1/2)*100),绘制三维曲线.并可通过拖动鼠标让曲线在三维空间
💻 JAVA
字号:
/*
 * GeometryCanvas.java
 *
 * Created on 2006年12月30日, 下午1:55
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.crscd.geometry;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;

/**
 *
 * @author Administrator
 */
public class GeometryCanvas extends java.awt.Canvas {
    
    /** Creates a new instance of GeometryCanvas */
    CoordinateSys       m_geometry = new CoordinateSys();
    Point               m_oMousePosition = new Point(0,0);
    boolean             m_bMouseCaptured = false;
    public GeometryCanvas() {
        this.setBackground(new Color(0,0,0));
        m_geometry.m_SetValidate(new Validate(1,1,0));
        m_geometry.m_SetViewRange(-100,100.0f,30);
        m_geometry.m_GetCoordinate().m_SetAngleH(30);
        m_geometry.m_GetCoordinate().m_SetAngleV(30);
        m_geometry.m_Calualate( "(1-(Y/50)^2+(Z/60)^2)^(1/2)*100",
                                "(1-(X/100)^2+(Z/60)^2)^(1/2)*50","",m_geometry.m_GetValidate(),true);
        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                MouseDragged(evt);
            }
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                MouseMoved(evt);
            }
        });
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                MousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                MouseReleased(evt);
            }
        });
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                ComponentResized(evt);
            }
        });
        Rectangle   rect = this.getBounds();
        Point       center = new Point(rect.width/2,rect.height/2);
        m_geometry.m_GetCoordinate().m_SetWindowOrigin(center);
        m_geometry.m_PreDraw();
    }

    public void paint(Graphics graphics) {
        m_geometry.m_Draw(graphics);
    }
    private void ComponentResized(java.awt.event.ComponentEvent evt) {
        Rectangle   rect = this.getBounds();
        Point       center = new Point(rect.width/2,rect.height/2);
        m_geometry.m_GetCoordinate().m_SetWindowOrigin(center);
        m_geometry.m_PreDraw();
    }
    private void MouseMoved(java.awt.event.MouseEvent evt) {
        if( m_bMouseCaptured == true )
        {
        }
    }
    private void MouseDragged(java.awt.event.MouseEvent evt) {                                     
        Point       curMousePosition = evt.getPoint();
        Rectangle   rect = this.getBounds();
        double	x = curMousePosition.x - m_oMousePosition.x;
        double	y = curMousePosition.y - m_oMousePosition.y;
        double	w = rect.width;
        double      h = rect.height;
        double	angleH = m_geometry.m_GetCoordinate().m_GetAngleH();
        double	angleV = m_geometry.m_GetCoordinate().m_GetAngleV();
        System.out.println("\n水平旋转="+angleH);
        System.out.println("\n垂直旋转="+angleV);
        m_oMousePosition = curMousePosition;
        angleH += x*360.0f/w;
        angleV += y*360.0f/h;
        m_geometry.m_GetCoordinate().m_SetAngleH(angleH);
        m_geometry.m_GetCoordinate().m_SetAngleV(angleV);
        m_geometry.m_PreDraw();
        this.repaint();
    }                                    
    private void MousePressed(java.awt.event.MouseEvent evt) {                                     
        m_bMouseCaptured = true;
        m_oMousePosition = evt.getPoint();
    }                                    
    private void MouseReleased(java.awt.event.MouseEvent evt) {
        m_bMouseCaptured = false;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -