Thursday, January 19, 2012

Membuat gambar 3D manual

Saya sarankan untuk mengambar objek anda di kertas milimeter,,untuk dapat menentukan koordinat yang anda inginkan.


Source Codes

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.io.*;

class tsdt3d
{
    double x,y,z;
    public tsdt3d(double x, double y, double z)
    {
        this.x=x;
        this.y=y;
        this.z=z;
    }
}

class tsdt2d
{
    double x,y;
    public tsdt2d(double x, double y)
    {
        this.x=x;
        this.y=y;
    }
    public void nti(double x, double y)
    {
        this.x=x;
        this.y=y;
    }
}

class font3D extends JPanel
{
   
    public double skala=1,tX=0,tY=0,tZ=0;
    public tsdt3d k3d[];
    public tsdt2d k2d[];
    public tsdt3d gsmb;
   
    public font3D()
    {
        setSize(1000,600);
        setLayout(null);
        setLocation(0,0);
        setingxyz();
        this.repaint();
    }

    public void paintComponent(Graphics g)
    {
        int i,j,k;
        t3dt2d();
        Graphics2D g2 = (Graphics2D) g;
        Paint lama = g2.getPaint();
        g2.setColor(Color.white);
        g2.fillRect(0,0,getWidth(),getHeight());
        g2.setColor(Color.black);
        int xc=500;
        int yc=300;
    
        //penggabungan antar sisi (6 part 1)
        for (i=0;i<68;i++)
        {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
        }
        g2.drawLine((int)k2d[0].x+xc,(int)k2d[0].y+yc,(int)k2d[68].x+xc,(int)k2d[68].y+yc);
       
        //penggabungan antar sisi (6 bolongan part 1)
          for (i=69;i<92;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
        g2.drawLine((int)k2d[69].x+xc,(int)k2d[69].y+yc,(int)k2d[92].x+xc,(int)k2d[92].y+yc); //BUAT GABUNG TITIK SATU KE TITIK YANG LAIN
       
        //penggabungan antar sisi (6 part 2)
        for (i=93;i<161;i++)
        {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
        }
        g2.drawLine((int)k2d[93].x+xc,(int)k2d[93].y+yc,(int)k2d[161].x+xc,(int)k2d[161].y+yc);
         
          //penggabungan antar sisi (6 bolongan part 2)
          for (i=162;i<185;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
        g2.drawLine((int)k2d[162].x+xc,(int)k2d[162].y+yc,(int)k2d[185].x+xc,(int)k2d[185].y+yc);
       
        //penggabungan agar menjadi objek 3d angka 6
        for (i=0;i<92;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+93].x+xc,(int)k2d[i+93].y+yc);
           }
        g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+93].x+xc,(int)k2d[i+93].y+yc);
       
        //penggabungan antar sisi (4 part 1)
          for (i=186;i<196;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[186].x+xc,(int)k2d[186].y+yc,(int)k2d[196].x+xc,(int)k2d[196].y+yc);
          
           //penggabungan antar sisi (4 bolongan part 1)
           for (i=197;i<199;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[197].x+xc,(int)k2d[197].y+yc,(int)k2d[199].x+xc,(int)k2d[199].y+yc);
          
           //penggabungan antar sisi (4 part 2)
          for (i=200;i<210;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[200].x+xc,(int)k2d[200].y+yc,(int)k2d[210].x+xc,(int)k2d[210].y+yc);
          
           //penggabungan antar sisi (4 bolongan part 2)
           for (i=211;i<213;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[211].x+xc,(int)k2d[211].y+yc,(int)k2d[213].x+xc,(int)k2d[213].y+yc);
          
           //penggabungan agar menjadi objek 3d angka 6
        for (i=186;i<200;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+14].x+xc,(int)k2d[i+14].y+yc);
           }
       
        //penggabungan antar sisi (9 part 1)
          for (i=214;i<287;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[214].x+xc,(int)k2d[214].y+yc,(int)k2d[287].x+xc,(int)k2d[287].y+yc);
          
           //penggabungan antar sisi (9 bolongan part 1)
           for (i=288;i<320;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[288].x+xc,(int)k2d[288].y+yc,(int)k2d[320].x+xc,(int)k2d[320].y+yc);
          
          //penggabungan antar sisi (9 part 2)
          for (i=321;i<394;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[321].x+xc,(int)k2d[321].y+yc,(int)k2d[394].x+xc,(int)k2d[394].y+yc);
          
         //penggabungan antar sisi (9 bolongan part 2)
           for (i=395;i<427;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
           g2.drawLine((int)k2d[395].x+xc,(int)k2d[395].y+yc,(int)k2d[427].x+xc,(int)k2d[427].y+yc);
          
          //penggabungan agar menjadi objek 3d angka 9
        for (i=214;i<320;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+107].x+xc,(int)k2d[i+107].y+yc);
           }
          
           //penggabungan antar sisi (4 edisi 2 part 1)
        for (i=428;i<438;i++)
        {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
        }
        g2.drawLine((int)k2d[428].x+xc,(int)k2d[428].y+yc,(int)k2d[438].x+xc,(int)k2d[438].y+yc);
       
        //penggabungan antar sisi (4 edisi 2 bolongan part 1)
        for (i=439;i<441;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
        g2.drawLine((int)k2d[439].x+xc,(int)k2d[439].y+yc,(int)k2d[441].x+xc,(int)k2d[441].y+yc);
       
        //penggabungan antar sisi (4 edisi 1 part 2)
        for (i=442;i<452;i++)
        {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
        }
        g2.drawLine((int)k2d[442].x+xc,(int)k2d[442].y+yc,(int)k2d[452].x+xc,(int)k2d[452].y+yc);
         
          //penggabungan antar sisi (4 edisi 1 bolongan part 2)
          for (i=453;i<455;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+1].x+xc,(int)k2d[i+1].y+yc);
           }
        g2.drawLine((int)k2d[453].x+xc,(int)k2d[453].y+yc,(int)k2d[455].x+xc,(int)k2d[455].y+yc);
       
       //penggabungan agar menjadi objek 3d angka 4 edisi 1
        for (i=428;i<441;i++)
           {
            g2.drawLine((int)k2d[i].x+xc,(int)k2d[i].y+yc,(int)k2d[i+14].x+xc,(int)k2d[i+14].y+yc);
           }
     }
   
    public void setingxyz()
    {
        int i,j;
        k3d = new tsdt3d[456];
        // 6 part 1
        k3d [0] = new tsdt3d(35,-25,5);
        k3d [1] = new tsdt3d(34,-28,5);
        k3d [2] = new tsdt3d(32,-33,5);       
        k3d [3] = new tsdt3d(31,-36,5);
        k3d [4] = new tsdt3d(30,-38,5);
        k3d [5] = new tsdt3d(29,-40,5);   
        k3d [6] = new tsdt3d(26,-42,5);
        k3d [7] = new tsdt3d(23,-44,5);
        k3d [8] = new tsdt3d(20,-44,5);
        k3d [9] = new tsdt3d(16,-43,5);
        k3d [10] = new tsdt3d(14,-42,5);
        k3d [11] = new tsdt3d(12,-40,5);
        k3d [12] = new tsdt3d(11,-38,5);
        k3d [13] = new tsdt3d(10,-36,5);
        k3d [14] = new tsdt3d(8,-32,5);
        k3d [15] = new tsdt3d(7,-30,5);
        k3d [16] = new tsdt3d(6,-26,5);
        k3d [17] = new tsdt3d(5,-22,5);
        k3d [18] = new tsdt3d(4,-14,5);
        k3d [19] = new tsdt3d(3,-6,5);
        k3d [20] = new tsdt3d(3,0,5);
        k3d [21] = new tsdt3d(3,8,5);
        k3d [22] = new tsdt3d(3,12,5);   
        k3d [23] = new tsdt3d(4,24,5);
        k3d [24] = new tsdt3d(5,30,5);
        k3d [25] = new tsdt3d(7,36,5);
        k3d [26] = new tsdt3d(9,41,5);
        k3d [27] = new tsdt3d(12,45,5);
        k3d [28] = new tsdt3d(14,47,5);
        k3d [29] = new tsdt3d(16,48,5);
        k3d [30] = new tsdt3d(19,49,5);
        k3d [31] = new tsdt3d(22,48,5);
        k3d [32] = new tsdt3d(25,47,5);
        k3d [33] = new tsdt3d(27,45,5);
        k3d [34] = new tsdt3d(29,42,5);
        k3d [35] = new tsdt3d(31,38,5);
        k3d [36] = new tsdt3d(33,32,5);
        k3d [37] = new tsdt3d(34,26,5);
        k3d [38] = new tsdt3d(35,17,5);
        k3d [39] = new tsdt3d(34,8,5);
        k3d [40] = new tsdt3d(33,4,5);
        k3d [41] = new tsdt3d(32,0,5);
        k3d [42] = new tsdt3d(30,-5,5);
        k3d [43] = new tsdt3d(28,-8,5);
        k3d [44] = new tsdt3d(26,-10,5);
        k3d [45] = new tsdt3d(24,-11,5);
        k3d [46] = new tsdt3d(21,-12,5);
        k3d [47] = new tsdt3d(17,-11,5);
        k3d [48] = new tsdt3d(16,-10,5);
        k3d [49] = new tsdt3d(15,-9,5);
        k3d [50] = new tsdt3d(12,-6,5);
        k3d [51] = new tsdt3d(10,-2,5);
        k3d [52] = new tsdt3d(9,2,5);
        k3d [53] = new tsdt3d(8,6,5);
        k3d [54] = new tsdt3d(8,0,5);
        k3d [55] = new tsdt3d(8,-4,5);
        k3d [56] = new tsdt3d(8,-8,5);
        k3d [57] = new tsdt3d(9,-16,5);
        k3d [58] = new tsdt3d(10,-22,5);
        k3d [59] = new tsdt3d(11,-25,5);
        k3d [60] = new tsdt3d(12,-28,5);
        k3d [61] = new tsdt3d(14,-32,5);
        k3d [62] = new tsdt3d(16,-34,5);
        k3d [63] = new tsdt3d(18,-35,5);
        k3d [64] = new tsdt3d(22,-35,5);
        k3d [65] = new tsdt3d(24,-34,5);
        k3d [66] = new tsdt3d(26,-32,5);
        k3d [67] = new tsdt3d(28,-28,5);
        k3d [68] = new tsdt3d(29,-22,5);
        //6 dalam
        k3d [69] = new tsdt3d(20,-3,5);
        k3d [70] = new tsdt3d(17,-2,5);
        k3d [71] = new tsdt3d(15,0,5);
        k3d [72] = new tsdt3d(13,2,5);
        k3d [73] = new tsdt3d(11,6,5);
        k3d [74] = new tsdt3d(10,10,5);
        k3d [75] = new tsdt3d(9,16,5);
        k3d [76] = new tsdt3d(9,21,5);
        k3d [77] = new tsdt3d(10,28,5);
        k3d [78] = new tsdt3d(11,32,5);
        k3d [79] = new tsdt3d(14,37,5);
        k3d [80] = new tsdt3d(16,39,5);
        k3d [81] = new tsdt3d(19,40,5);
        k3d [82] = new tsdt3d(22,39,5);
        k3d [83] = new tsdt3d(25,36,5);
        k3d [84] = new tsdt3d(27,32,5);
        k3d [85] = new tsdt3d(28,28,5);
        k3d [86] = new tsdt3d(29,24,5);
        k3d [87] = new tsdt3d(29,18,5);
        k3d [88] = new tsdt3d(29,12,5);
        k3d [89] = new tsdt3d(28,7,5);
        k3d [90] = new tsdt3d(27,4,5);
        k3d [91] = new tsdt3d(25,1,5);
        k3d [92] = new tsdt3d(23,-1,5);
       
        //6 part 2
        k3d [93] = new tsdt3d(35,-25,-5);
        k3d [94] = new tsdt3d(34,-28,-5);
        k3d [95] = new tsdt3d(32,-33,-5);       
        k3d [96] = new tsdt3d(31,-36,-5);
        k3d [97] = new tsdt3d(30,-38,-5);
        k3d [98] = new tsdt3d(29,-40,-5);   
        k3d [99] = new tsdt3d(26,-42,-5);
        k3d [100] = new tsdt3d(23,-44,-5);
        k3d [101] = new tsdt3d(20,-44,-5);
        k3d [102] = new tsdt3d(16,-43,-5);
        k3d [103] = new tsdt3d(14,-42,-5);
        k3d [104] = new tsdt3d(12,-40,-5);
        k3d [105] = new tsdt3d(11,-38,-5);
        k3d [106] = new tsdt3d(10,-36,-5);
        k3d [107] = new tsdt3d(8,-32,-5);
        k3d [108] = new tsdt3d(7,-30,-5);
        k3d [109] = new tsdt3d(6,-26,-5);
        k3d [110] = new tsdt3d(5,-22,-5);
        k3d [111] = new tsdt3d(4,-14,-5);
        k3d [112] = new tsdt3d(3,-6,-5);
        k3d [113] = new tsdt3d(3,0,-5);
        k3d [114] = new tsdt3d(3,8,-5);
        k3d [115] = new tsdt3d(3,12,-5);   
        k3d [116] = new tsdt3d(4,24,-5);
        k3d [117] = new tsdt3d(5,30,-5);
        k3d [118] = new tsdt3d(7,36,-5);
        k3d [119] = new tsdt3d(9,41,-5);
        k3d [120] = new tsdt3d(12,45,-5);
        k3d [121] = new tsdt3d(14,47,-5);
        k3d [122] = new tsdt3d(16,48,-5);
        k3d [123] = new tsdt3d(19,49,-5);
        k3d [124] = new tsdt3d(22,48,-5);
        k3d [125] = new tsdt3d(25,47,-5);
        k3d [126] = new tsdt3d(27,45,-5);
        k3d [127] = new tsdt3d(29,42,-5);
        k3d [128] = new tsdt3d(31,38,-5);
        k3d [129] = new tsdt3d(33,32,-5);
        k3d [130] = new tsdt3d(34,26,-5);
        k3d [131] = new tsdt3d(35,17,-5);
        k3d [132] = new tsdt3d(34,8,-5);
        k3d [133] = new tsdt3d(33,4,-5);
        k3d [134] = new tsdt3d(32,0,-5);
        k3d [135] = new tsdt3d(30,-5,-5);
        k3d [136] = new tsdt3d(28,-8,-5);
        k3d [137] = new tsdt3d(26,-10,-5);
        k3d [138] = new tsdt3d(24,-11,-5);
        k3d [139] = new tsdt3d(21,-12,-5);
        k3d [140] = new tsdt3d(17,-11,-5);
        k3d [141] = new tsdt3d(16,-10,-5);
        k3d [142] = new tsdt3d(15,-9,-5);
        k3d [143] = new tsdt3d(12,-6,-5);
        k3d [144] = new tsdt3d(10,-2,-5);
        k3d [145] = new tsdt3d(9,2,-5);
        k3d [146] = new tsdt3d(8,6,-5);
        k3d [147] = new tsdt3d(8,0,-5);
        k3d [148] = new tsdt3d(8,-4,-5);
        k3d [149] = new tsdt3d(8,-8,-5);
        k3d [150] = new tsdt3d(9,-16,-5);
        k3d [151] = new tsdt3d(10,-22,-5);
        k3d [152] = new tsdt3d(11,-25,-5);
        k3d [153] = new tsdt3d(12,-28,-5);
        k3d [154] = new tsdt3d(14,-32,-5);
        k3d [155] = new tsdt3d(16,-34,-5);
        k3d [156] = new tsdt3d(18,-35,-5);
        k3d [157] = new tsdt3d(22,-35,-5);
        k3d [158] = new tsdt3d(24,-34,-5);
        k3d [159] = new tsdt3d(26,-32,-5);
        k3d [160] = new tsdt3d(28,-28,-5);
        k3d [161] = new tsdt3d(29,-22,-5);
       
        k3d [162] = new tsdt3d(20,-3,-5);
        k3d [163] = new tsdt3d(17,-2,-5);
        k3d [164] = new tsdt3d(15,0,-5);
        k3d [165] = new tsdt3d(13,2,-5);
        k3d [166] = new tsdt3d(11,6,-5);
        k3d [167] = new tsdt3d(10,10,-5);
        k3d [168] = new tsdt3d(9,16,-5);
        k3d [169] = new tsdt3d(9,21,-5);
        k3d [170] = new tsdt3d(10,28,-5);
        k3d [171] = new tsdt3d(11,32,-5);
        k3d [172] = new tsdt3d(14,37,-5);
        k3d [173] = new tsdt3d(16,39,-5);
        k3d [174] = new tsdt3d(19,40,-5);
        k3d [175] = new tsdt3d(22,39,-5);
        k3d [176] = new tsdt3d(25,36,-5);
        k3d [177] = new tsdt3d(27,32,-5);
        k3d [178] = new tsdt3d(28,28,-5);
        k3d [179] = new tsdt3d(29,24,-5);
        k3d [180] = new tsdt3d(29,18,-5);
        k3d [181] = new tsdt3d(29,12,-5);
        k3d [182] = new tsdt3d(28,7,-5);
        k3d [183] = new tsdt3d(27,4,-5);
        k3d [184] = new tsdt3d(25,1,-5);
        k3d [185] = new tsdt3d(23,-1,-5);
       
        //4 kedua part 1
        k3d [186] = new tsdt3d(58,-44,5);
        k3d [187] = new tsdt3d(39,18,5);
        k3d [188] = new tsdt3d(39,26,5);
        k3d [189] = new tsdt3d(60,26,5);
        k3d [190] = new tsdt3d(60,47,5);
        k3d [191] = new tsdt3d(65,47,5);
        k3d [192] = new tsdt3d(65,26,5);
        k3d [193] = new tsdt3d(72,26,5);
        k3d [194] = new tsdt3d(72,17,5);
        k3d [195] = new tsdt3d(65,17,5);
        k3d [196] = new tsdt3d(65,-44,5);
        //lubang
        k3d [197] = new tsdt3d(60,-36,5);
        k3d [198] = new tsdt3d(44.5,17,5);
        k3d [199] = new tsdt3d(60,17,5);
        //4 kedua part 2
        k3d [200] = new tsdt3d(58,-44,-5);
        k3d [201] = new tsdt3d(39,18,-5);
        k3d [202] = new tsdt3d(39,26,-5);
        k3d [203] = new tsdt3d(60,26,-5);
        k3d [204] = new tsdt3d(60,47,-5);
        k3d [205] = new tsdt3d(65,47,-5);
        k3d [206] = new tsdt3d(65,26,-5);
        k3d [207] = new tsdt3d(72,26,-5);
        k3d [208] = new tsdt3d(72,17,-5);
        k3d [209] = new tsdt3d(65,17,-5);
        k3d [210] = new tsdt3d(65,-44,-5);
        //lubang
        k3d [211] = new tsdt3d(60,-36,-5);
        k3d [212] = new tsdt3d(44.5,17,-5);
        k3d [213] = new tsdt3d(60,17,-5);
                   
        //9 part 1
        k3d [214] = new tsdt3d(-33.9,31,5);
        k3d [215] = new tsdt3d(-32,36,5);
        k3d [216] = new tsdt3d(-30.8,39,5);
        k3d [217] = new tsdt3d(-29.8,41,5);
        k3d [218] = new tsdt3d(-28,44,5);
        k3d [219] = new tsdt3d(-25,47,5);
        k3d [220] = new tsdt3d(-23,48,5);
        k3d [221] = new tsdt3d(-20,48.5,5);
        k3d [222] = new tsdt3d(-18,48.3,5);
        k3d [223] = new tsdt3d(-16,48,5);
        k3d [224] = new tsdt3d(-13,45,5);
        k3d [225] = new tsdt3d(-10,42,5);
        k3d [226] = new tsdt3d(-8,38,5);
        k3d [227] = new tsdt3d(-6,32,5);
        k3d [228] = new tsdt3d(-5,28,5);
        k3d [229] = new tsdt3d(-4,23,5);
        k3d [230] = new tsdt3d(-3,14,5);
        k3d [231] = new tsdt3d(-2.2,6,5);
        k3d [232] = new tsdt3d(-2,0,5);
        k3d [233] = new tsdt3d(-2.2,-6,5);
        k3d [234] = new tsdt3d(-2.3,-10,5);
        k3d [235] = new tsdt3d(-3,-16,5);
        k3d [236] = new tsdt3d(-4,-22,5);
        k3d [237] = new tsdt3d(-6,-30,5);
        k3d [238] = new tsdt3d(-8,-36,5);
        k3d [239] = new tsdt3d(-10,-39,5);
        k3d [240] = new tsdt3d(-11,-41,5);
        k3d [241] = new tsdt3d(-14,-43,5);
        k3d [242] = new tsdt3d(-16,-43.8,5);
        k3d [243] = new tsdt3d(-18,-44,5);
        k3d [244] = new tsdt3d(-20,-44,5);
        k3d [245] = new tsdt3d(-23,-43,5);
        k3d [246] = new tsdt3d(-26,-41,5);
        k3d [247] = new tsdt3d(-28,-38,5);
        k3d [248] = new tsdt3d(-30,-35,5);
        k3d [249] = new tsdt3d(-31,-32,5);
        k3d [250] = new tsdt3d(-32,-29,5);
        k3d [251] = new tsdt3d(-33,-26,5);
        k3d [252] = new tsdt3d(-34,-20,5);
        k3d [253] = new tsdt3d(-34.2,-14,5);
        k3d [254] = new tsdt3d(-34.3,-10,5);
        k3d [255] = new tsdt3d(-34,-6,5);
        k3d [256] = new tsdt3d(-33,0,5);
       
        k3d [257] = new tsdt3d(-32,3,5);
        k3d [258] = new tsdt3d(-31,6,5);
        k3d [259] = new tsdt3d(-30,8,5);
        k3d [260] = new tsdt3d(-29,10,5);
        k3d [261] = new tsdt3d(-27.8,12,5);
        k3d [262] = new tsdt3d(-26,14,5);
       
        k3d [263] = new tsdt3d(-24,15.5,5);
        k3d [264] = new tsdt3d(-22,16,5);
        k3d [265] = new tsdt3d(-20,16.3,5);
        k3d [266] = new tsdt3d(-18,16,5);
        k3d [267] = new tsdt3d(-16,15,5);
       
        k3d [268] = new tsdt3d(-14.5,14,5);
        k3d [269] = new tsdt3d(-13,12,5);
        k3d [270] = new tsdt3d(-11,9,5);
        k3d [271] = new tsdt3d(-9,4,5);
        k3d [272] = new tsdt3d(-7.8,-1.8,5);
        k3d [273] = new tsdt3d(-7.8,8,5);
        k3d [274] = new tsdt3d(-8,14,5);
        k3d [275] = new tsdt3d(-9,22,5);
      
        k3d [276] = new tsdt3d(-10,27,5);
        k3d [277] = new tsdt3d(-11,30,5);
        k3d [278] = new tsdt3d(-12,33,5);
        k3d [279] = new tsdt3d(-13,35,5);
        k3d [280] = new tsdt3d(-14.5,37,5);
        k3d [281] = new tsdt3d(-17,39,5);
        k3d [282] = new tsdt3d(-20,40,5);
        k3d [283] = new tsdt3d(-23,39,5);
        k3d [284] = new tsdt3d(-24,38,5);
        k3d [285] = new tsdt3d(-26,36,5);
        k3d [286] = new tsdt3d(-28,31,5);
        k3d [287] = new tsdt3d(-29,27.8,5);
       
        //angka 9 dalam
        k3d [288] = new tsdt3d(-19,7,5);
        k3d [289] = new tsdt3d(-17,6.3,5);
        k3d [290] = new tsdt3d(-16,5.8,5);
        k3d [291] = new tsdt3d(-13,3,5);
        k3d [292] = new tsdt3d(-11.8,0,5);
        k3d [293] = new tsdt3d(-10,-4,5);
        k3d [294] = new tsdt3d(-9,-8,5);
        k3d [295] = new tsdt3d(-8.5,-12,5);
        k3d [296] = new tsdt3d(-8.6,-16,5);
        k3d [297] = new tsdt3d(-8.7,-20,5);
        k3d [298] = new tsdt3d(-9,-22,5);   
        k3d [299] = new tsdt3d(-10,-26,5);
        k3d [300] = new tsdt3d(-11,-29,5);
        k3d [301] = new tsdt3d(-13,-32,2);
        k3d [302] = new tsdt3d(-14,-33.5,5);
       
        k3d [303] = new tsdt3d(-16,-34.5,5);
        k3d [304] = new tsdt3d(-19,-35.5,5);
        k3d [305] = new tsdt3d(-21.2,-35,5);
        k3d [306] = new tsdt3d(-23.8,-33,5);
        k3d [307] = new tsdt3d(-25.4,-28,5);
        k3d [308] = new tsdt3d(-27,-26,5);
        k3d [309] = new tsdt3d(-28,-22,5);
        k3d [310] = new tsdt3d(-28.5,-18,5);
        k3d [311] = new tsdt3d(-28.8,-14,5);
        k3d [312] = new tsdt3d(-28.5,-10,5);
        k3d [313] = new tsdt3d(-28.4,-8,5);
        k3d [314] = new tsdt3d(-28,-4.8,5);
        k3d [315] = new tsdt3d(-27,-1,5);
        k3d [316] = new tsdt3d(-26,1,5);
        k3d [317] = new tsdt3d(-25,3,5);
        k3d [318] = new tsdt3d(-23.8,5,5);
        k3d [319] = new tsdt3d(-22,6,5);
        k3d [320] = new tsdt3d(-21,6.8,5);
       
        //9 part 2
        k3d [321] = new tsdt3d(-33.9,31,-5);
        k3d [322] = new tsdt3d(-32,36,-5);
        k3d [323] = new tsdt3d(-30.8,39,-5);
        k3d [324] = new tsdt3d(-29.8,41,-5);
        k3d [325] = new tsdt3d(-28,44,-5);
        k3d [326] = new tsdt3d(-25,47,-5);
        k3d [327] = new tsdt3d(-23,48,-5);
        k3d [328] = new tsdt3d(-20,48.5,-5);
        k3d [329] = new tsdt3d(-18,48.3,-5);
        k3d [330] = new tsdt3d(-16,48,-5);
        k3d [331] = new tsdt3d(-13,45,-5);
        k3d [332] = new tsdt3d(-10,42,-5);
        k3d [333] = new tsdt3d(-8,38,-5);
        k3d [334] = new tsdt3d(-6,32,-5);
        k3d [335] = new tsdt3d(-5,28,-5);
        k3d [336] = new tsdt3d(-4,23,-5);
        k3d [337] = new tsdt3d(-3,14,-5);
        k3d [338] = new tsdt3d(-2.2,6,-5);
        k3d [339] = new tsdt3d(-2,0,-5);
        k3d [340] = new tsdt3d(-2.2,-6,-5);
        k3d [341] = new tsdt3d(-2.3,-10,-5);
        k3d [342] = new tsdt3d(-3,-16,-5);
        k3d [343] = new tsdt3d(-4,-22,-5);
        k3d [344] = new tsdt3d(-6,-30,-5);
        k3d [345] = new tsdt3d(-8,-36,-5);
        k3d [346] = new tsdt3d(-10,-39,-5);
        k3d [347] = new tsdt3d(-11,-41,-5);
        k3d [348] = new tsdt3d(-14,-43,-5);
        k3d [349] = new tsdt3d(-16,-43.8,-5);
        k3d [350] = new tsdt3d(-18,-44,-5);
        k3d [351] = new tsdt3d(-20,-44,-5);
        k3d [352] = new tsdt3d(-23,-43,-5);
        k3d [353] = new tsdt3d(-26,-41,-5);
        k3d [354] = new tsdt3d(-28,-38,-5);
        k3d [355] = new tsdt3d(-30,-35,-5);
        k3d [356] = new tsdt3d(-31,-32,-5);
        k3d [357] = new tsdt3d(-32,-29,-5);
        k3d [358] = new tsdt3d(-33,-26,-5);
        k3d [359] = new tsdt3d(-34,-20,-5);
        k3d [360] = new tsdt3d(-34.2,-14,-5);
        k3d [361] = new tsdt3d(-34.3,-10,-5);
        k3d [362] = new tsdt3d(-34,-6,-5);
        k3d [363] = new tsdt3d(-33,0,-5);
       
        k3d [364] = new tsdt3d(-32,3,-5);
        k3d [365] = new tsdt3d(-31,6,-5);
        k3d [366] = new tsdt3d(-30,8,-5);
        k3d [367] = new tsdt3d(-29,10,-5);
        k3d [368] = new tsdt3d(-27.8,12,-5);
        k3d [369] = new tsdt3d(-26,14,-5);
       
        k3d [370] = new tsdt3d(-24,15.5,-5);
        k3d [371] = new tsdt3d(-22,16,-5);
        k3d [372] = new tsdt3d(-20,16.3,-5);
        k3d [373] = new tsdt3d(-18,16,-5);
        k3d [374] = new tsdt3d(-16,15,-5);
       
        k3d [375] = new tsdt3d(-14.5,14,-5);
        k3d [376] = new tsdt3d(-13,12,-5);
        k3d [377] = new tsdt3d(-11,9,-5);
        k3d [378] = new tsdt3d(-9,4,-5);
        k3d [379] = new tsdt3d(-7.8,-1.8,-5);
        k3d [380] = new tsdt3d(-7.8,8,-5);
        k3d [381] = new tsdt3d(-8,14,-5);
        k3d [382] = new tsdt3d(-9,22,-5);
      
        k3d [383] = new tsdt3d(-10,27,-5);
        k3d [384] = new tsdt3d(-11,30,-5);
        k3d [385] = new tsdt3d(-12,33,-5);
        k3d [386] = new tsdt3d(-13,35,-5);
        k3d [387] = new tsdt3d(-14.5,37,-5);
        k3d [388] = new tsdt3d(-17,39,-5);
        k3d [389] = new tsdt3d(-20,40,-5);
        k3d [390] = new tsdt3d(-23,39,-5);
        k3d [391] = new tsdt3d(-24,38,-5);
        k3d [392] = new tsdt3d(-26,36,-5);
        k3d [393] = new tsdt3d(-28,31,-5);
        k3d [394] = new tsdt3d(-29,27.8,-5);
       
        //angka 9 dalam
        k3d [395] = new tsdt3d(-19,7,-5);
        k3d [396] = new tsdt3d(-17,6.3,-5);
        k3d [397] = new tsdt3d(-16,5.8,-5);
        k3d [398] = new tsdt3d(-13,3,-5);
        k3d [399] = new tsdt3d(-11.8,0,-5);
        k3d [400] = new tsdt3d(-10,-4,-5);
        k3d [401] = new tsdt3d(-9,-8,-5);
        k3d [402] = new tsdt3d(-8.5,-12,-5);
        k3d [403] = new tsdt3d(-8.6,-16,-5);
        k3d [404] = new tsdt3d(-8.7,-20,-5);
        k3d [405] = new tsdt3d(-9,-22,-5);   
        k3d [406] = new tsdt3d(-10,-26,-5);
        k3d [407] = new tsdt3d(-11,-29,-5);
        k3d [408] = new tsdt3d(-13,-32,-5);
        k3d [409] = new tsdt3d(-14,-33.5,-5);
       
        k3d [410] = new tsdt3d(-16,-34.5,-5);
        k3d [411] = new tsdt3d(-19,-35.5,-5);
        k3d [412] = new tsdt3d(-21.2,-35,-5);
        k3d [413] = new tsdt3d(-23.8,-33,-5);
        k3d [414] = new tsdt3d(-25.4,-28,-5);
        k3d [415] = new tsdt3d(-27,-26,-5);
        k3d [416] = new tsdt3d(-28,-22,-5);
        k3d [417] = new tsdt3d(-28.5,-18,-5);
        k3d [418] = new tsdt3d(-28.8,-14,-5);
        k3d [419] = new tsdt3d(-28.5,-10,-5);
        k3d [420] = new tsdt3d(-28.4,-8,-5);
        k3d [421] = new tsdt3d(-28,-4.8,-5);
        k3d [422] = new tsdt3d(-27,-1,-5);
        k3d [423] = new tsdt3d(-26,1,-5);
        k3d [424] = new tsdt3d(-25,3,-5);
        k3d [425] = new tsdt3d(-23.8,5,-5);
        k3d [426] = new tsdt3d(-22,6,-5);
        k3d [427] = new tsdt3d(-21,6.8,-5);
       
        //4 yang pertama part 1
        k3d [428] = new tsdt3d(-52,-45,5);
        k3d [429] = new tsdt3d(-71,18,5);
        k3d [430] = new tsdt3d(-71,26,5);
        k3d [431] = new tsdt3d(-50,26,5);
        k3d [432] = new tsdt3d(-50,47,5);
        k3d [433] = new tsdt3d(-45,47,5);
        k3d [434] = new tsdt3d(-45,26,5);
        k3d [435] = new tsdt3d(-38,26,5);
        k3d [436] = new tsdt3d(-38,17,5);
        k3d [437] = new tsdt3d(-45,17,5);
        k3d [438] = new tsdt3d(-45,-45,5);
        //luubang
        k3d [439] = new tsdt3d(-50,-36,5);
        k3d [440] = new tsdt3d(-66,17,5);
        k3d [441] = new tsdt3d(-50,17,5);
       
        //4 yang pertama part 2
        k3d [442] = new tsdt3d(-52,-45,-5);
        k3d [443] = new tsdt3d(-71,18,-5);
        k3d [444] = new tsdt3d(-71,26,-5);
        k3d [445] = new tsdt3d(-50,26,-5);
        k3d [446] = new tsdt3d(-50,47,-5);
        k3d [447] = new tsdt3d(-45,47,-5);
        k3d [448] = new tsdt3d(-45,26,-5);
        k3d [449] = new tsdt3d(-38,26,-5);
        k3d [450] = new tsdt3d(-38,17,-5);
        k3d [451] = new tsdt3d(-45,17,-5);
        k3d [452] = new tsdt3d(-45,-45,-5);
        //lubang
        k3d [453] = new tsdt3d(-50,-36,-5);
        k3d [454] = new tsdt3d(-66,17,-5);
        k3d [455] = new tsdt3d(-50,17,-5);
       
        gsmb = new tsdt3d(0,0,0);
       
        k2d = new tsdt2d[1000];
        for(i=0;i<k2d.length;i++)
        {
            k2d[i]=new tsdt2d(0,0);
        }
    }

    public void t3dt2d()
    {

    double sx =  Math.sin(gsmb.x);
    double cx =  Math.cos(gsmb.x);
    double sy =  Math.sin(gsmb.y);
    double cy =  Math.cos(gsmb.y);
    double sz =  Math.sin(gsmb.z);
    double cz =  Math.cos(gsmb.z);
        double x,y,z, xy,xz, yx,yz, zx,zy, scaleFactor,focalLength=0,zmX,zmY ;
        scaleFactor = 0;
        focalLength = 300;
        for(int i=0;i<k3d.length;i++){
            x = k3d[i].x;
            y = k3d[i].y;
            z = k3d[i].z;
            xy = cx*y - sx*z;
            xz = sx*y + cx*z;
            yz = cy*xz - sy*x;
            yx = sy*xz + cy*x;
            zx = cz*yx - sz*xy;
            zy = sz*yx + cz*xy;
            scaleFactor = focalLength/(focalLength + yz);
            x = zx*scaleFactor;
            y = zy*scaleFactor;
            z = yz;
            zmX = skala*x;
            zmY = skala*y;
            k2d[i].nti(zmX+tX, zmY+tY);
         
        }

    }
 
}

class utama extends JFrame implements ActionListener
{
    font3D x1 = new font3D();
    JButton br = new JButton("searah");
    JButton brm = new JButton("melawan");
    JButton br1 = new JButton("searah");
    JButton br1m = new JButton("melawan");
    JButton br2 = new JButton("searah");
    JButton br2m = new JButton("melawan");
    JButton br3 = new JButton("-->");
    JButton br4 = new JButton("<--");
    JButton br5 = new JButton("^");
    JButton br6 = new JButton("v");
    JButton br7 = new JButton("1x");
    JButton br8 = new JButton("2x");
    JButton br9 = new JButton("3x");
    JButton br10 = new JButton("4x");
    JButton br11 = new JButton("5x");
    JLabel lbl = new JLabel("perbesar");
    JLabel lbl1 = new JLabel("perkecil");
    JLabel lbl2 = new JLabel("X");
    JLabel lbl3 = new JLabel("Y");
    JLabel lbl4 = new JLabel("Z");
    JButton br12 = new JButton("1x");
    JButton br13 = new JButton("2x");
    JButton br14 = new JButton("3x");
    JButton br15 = new JButton("4x");
    JButton br16 = new JButton("5x");
    JButton br19 = new JButton("default");
   
    public utama()
    {
        setSize(1000,760);
        setLocation(300,10);
        setLayout(null);
        x1.setLocation(0,0);
        br.setLocation(30,630);
        br.setSize(100,20);

        brm.setLocation(30,660);
        brm.setSize(100,20);
       
        br1.setLocation(140,630);
        br1.setSize(100,20);
       
        br1m.setLocation(140,660);
        br1m.setSize(100,20);
       
        br2.setLocation(250,630);
        br2.setSize(100,20);

        br2m.setLocation(250,660);
        br2m.setSize(100,20);
       
        br3.setLocation(470,640);
        br3.setSize(100,20);
       
        br4.setLocation(370,640);
        br4.setSize(100,20);
       
        br7.setLocation(580,640);
        br7.setSize(50,20);
       
        br8.setLocation(640,640);
        br8.setSize(50,20);
       
        br9.setLocation(700,640);
        br9.setSize(50,20);
       
        br10.setLocation(760,640);
        br10.setSize(50,20);
       
        br11.setLocation(820,640);
        br11.setSize(50,20);
       
        lbl.setLocation(700,615);
        lbl.setSize(100,20);
       
        lbl1.setLocation(700,665);
        lbl1.setSize(100,20);
       
        lbl2.setLocation(80,610);
        lbl2.setSize(100,20);
       
        lbl3.setLocation(190,610);
        lbl3.setSize(100,20);
       
        lbl4.setLocation(290,610);
        lbl4.setSize(100,20);
       
        br5.setLocation(420,615);
        br5.setSize(100,20);
       
        br6.setLocation(420,665);
        br6.setSize(100,20);
       
        br12.setLocation(580,685);
        br12.setSize(50,20);
       
        br13.setLocation(640,685);
        br13.setSize(50,20);
       
        br14.setLocation(700,685);
        br14.setSize(50,20);
       
        br15.setLocation(760,685);
        br15.setSize(50,20);
       
        br16.setLocation(820,685);
        br16.setSize(50,20);
       
        br19.setLocation(890,660);
        br19.setSize(50,20);
           
        br.addActionListener(this);
        brm.addActionListener(this);
        br1.addActionListener(this);
        br1m.addActionListener(this);
        br3.addActionListener(this);
        br4.addActionListener(this);
        br5.addActionListener(this);
        br6.addActionListener(this);
        br7.addActionListener(this);
        br8.addActionListener(this);
        br2.addActionListener(this);
        br2m.addActionListener(this);
        br9.addActionListener(this);
        br10.addActionListener(this);
        br11.addActionListener(this);
        br12.addActionListener(this);
        br13.addActionListener(this);
        br14.addActionListener(this);
        br15.addActionListener(this);
        br16.addActionListener(this);
        br19.addActionListener(this);
       
        add(x1);
        add(br);
        add(brm);
        add(br1);
        add(br1m);
        add(br3);
        add(br4);
        add(br5);
        add(br6);
        add(br7);
        add(br8);
        add(br9);
        add(br10);
        add(br11);
        add(br12);
        add(br13);
        add(br14);
        add(br15);
        add(br16);
        add(br19);
        add(br2);
        add(br2m);
        add(lbl);
        add(lbl1);
        add(lbl2);
        add(lbl3);
        add(lbl4);
        show();
    }
    public void actionPerformed(ActionEvent ae)
    {
        if(ae.getSource().equals(br))
        {
            x1.gsmb.x = x1.gsmb.x+0.05;
            x1.repaint();
        }
        if(ae.getSource().equals(brm))
        {
            x1.gsmb.x = x1.gsmb.x-0.05;
            x1.repaint();
        }
        if(ae.getSource().equals(br1m))
        {
            x1.gsmb.y = x1.gsmb.y-0.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br1))
        {
            x1.gsmb.y = x1.gsmb.y+0.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br2))
        {
            x1.gsmb.z = x1.gsmb.z+0.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br2m))
        {
            x1.gsmb.z = x1.gsmb.z-0.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br3))
        {
            x1.tX=x1.tX+5;
       
            x1.repaint();
        }
       
        if(ae.getSource().equals(br4))
        {
            x1.tX=x1.tX-5;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br5))
        {
            x1.tY=x1.tY-5;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br6))
        {
            x1.tY=x1.tY+5;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br7))
        {
            x1.skala=x1.skala*1.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br8))
        {
            x1.skala=x1.skala*2.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br9))
        {
            x1.skala=x1.skala*3.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br10))
        {
            x1.skala=x1.skala*4.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br11))
        {
            x1.skala=x1.skala*5.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br12))
        {
            x1.skala=x1.skala/1.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br13))
        {
            x1.skala=x1.skala/2.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br14))
        {
            x1.skala=x1.skala/3.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br15))
        {
            x1.skala=x1.skala/4.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br16))
        {
            x1.skala=x1.skala/5.05;
       
            x1.repaint();
        }
        if(ae.getSource().equals(br19))
        {
            x1.tX=0;
            x1.tY=0;
            x1.gsmb.x=0;
            x1.gsmb.y=0;
            x1.gsmb.z=0;
            x1.skala=1;
            x1.repaint();
        }
    }
    public static void main(String[] args)
    {
        utama d = new utama();
    }
}
PRINT OUT