import java.applet.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.Graphics; import java.io.*; import java.net.*; import java.util.*; import java.text.DateFormat; import javax.swing.*; /* 低温センター・イベント表示アプレット(センサー4台版) */ public class heniitk_cr04ev extends Applet implements Runnable,ActionListener{ Thread timer; volatile boolean running; Image Im; Graphics g,ImG; String x,x2,y,z,u,v,s,f,st,sk,p,ln,cline,cback,cbase0,cbase,cfont1,cfont2,comment,scale; String cname[] = new String[3]; int minch,blocks,ftype,skip,pp,length,linecn,backcn,base0cn,basecn,font1cn,font2cn; float cpval; int[] nsam = new int[96]; int ch,chh,wh,ww; int[] max = new int[96]; int[] min = new int[96]; int[][] sam = new int[96][15000]; int[][] time = new int[2][6]; long[][] xtime = new long[96][10000]; private GregorianCalendar time0 = new GregorianCalendar(); protected GregorianCalendar time1 = new GregorianCalendar(); TimeZone tz=TimeZone.getTimeZone("JST"); protected Date date0 = new Date(); Date date1 = new Date(); protected long[] mtime = new long[3]; Button b1,b2,b3,b4,b5,b6,b7,b8,b9; int loc[] = new int[128]; int[][] px = new int[32][16]; int[][] py = new int[32][16]; int[] px0 = new int[32]; int[] py0 = new int[32]; int[][] fx = new int[8][6]; int[][] fy = new int[8][6]; int[][] fx0 = new int[8][6]; int[][] fy0 = new int[8][6]; int[] lx0 = new int[7]; int[] ly0 = new int[7]; int refreshrate,sps,nstn,nsamx,rto50; float rto; public void init(){ Dimension FS = this.getSize(); wh=FS.height-18; ww=FS.width; x=this.getParameter("url"); x2=this.getParameter("file"); if(x==null&&x2==null){x=getCodeBase().toString()+"tmp/tmp.win";} else if(x==null){x=getCodeBase().toString()+x2;} y=this.getParameter("channel"); if(y==null){y="0";} z=this.getParameter("refresh"); if(z==null){z="100";} u=this.getParameter("unit"); if(u==null){u="count";} v=this.getParameter("const"); if(v==null){v="1";} s=this.getParameter("block"); if(s==null){s="1";} f=this.getParameter("float"); if(f==null){f="0";} p=this.getParameter("range"); if(p==null){p="0";} cname[0]=this.getParameter("channel1"); if(cname[0]==null){cname[0]="UNKNOWN";} cname[1]=this.getParameter("channel2"); if(cname[1]==null){cname[1]="UNKNOWN";} cname[2]=this.getParameter("channel3"); if(cname[2]==null){cname[2]="UNKNOWN";} st=this.getParameter("station"); if(st==null){st="";} sk=this.getParameter("skip"); if(sk==null){sk="0";} ln=this.getParameter("length"); if(ln==null){ln="0";} cline=this.getParameter("linecolor"); if(cline==null){cline="ffff00";} cback=this.getParameter("backcolor"); if(cback==null){cback="606060";} cbase0=this.getParameter("base0color"); if(cbase0==null){cbase0="00ffff";} cbase=this.getParameter("basecolor"); if(cbase==null){cbase="0000ff";} cfont1=this.getParameter("font1color"); if(cfont1==null){cfont1="ffffff";} cfont2=this.getParameter("font2color"); if(cfont2==null){cfont2="000000";} comment=this.getParameter("comment"); if(comment==null){comment="the Study Group on the IT Kyoushin Seismometer";} scale=this.getParameter("scale"); if(scale==null){scale="0";} minch=Integer.parseInt(y,16); refreshrate=Integer.parseInt(z); cpval=Float.parseFloat(v); blocks=Integer.parseInt(s); ftype=Integer.parseInt(f); skip=Integer.parseInt(sk); pp=Integer.parseInt(p); length=Integer.parseInt(ln)-1; linecn=Integer.parseInt(cline,16); backcn=Integer.parseInt(cback,16); base0cn=Integer.parseInt(cbase0,16); basecn=Integer.parseInt(cbase,16); font1cn=Integer.parseInt(cfont1,16); font2cn=Integer.parseInt(cfont2,16); rto=Float.parseFloat(scale); if(rto!=0)rto=(float)(1.0/rto); sps=20; setLayout(null); // ボタン生成。 b1 = new Button("|<<"); b1.setBounds(0,wh,40,18); b2 = new Button(">>"); b2.setBounds(120,wh,40,18); b3 = new Button(">>+"); b3.setBounds(80,wh,40,18); b4 = new Button(">>-"); b4.setBounds(40,wh,40,18); b5 = new Button("start"); b5.setBounds(160,wh,40,18); b6 = new Button("auto"); b6.setBounds(220,wh,40,18); b7 = new Button("*1.4"); b7.setBounds(260,wh,40,18); b8 = new Button("/1.4"); b8.setBounds(300,wh,40,18); b9 = new Button("reload"); b9.setBounds(400,wh,60,18); // ボタンをアプレットに追加。 this.add(b1); this.add(b2); this.add(b3); this.add(b4); this.add(b5); this.add(b6); this.add(b7); this.add(b8); // this.add(b9); // ボタンがクリックされるとイベントをイベント処理メソッド(actionPerformed)に通知するように設定。 b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); // b9.addActionListener(this); // センサー点(低温センター4点) px0[0] = ww*17/28; py0[0] = wh*17/28; // py0[0] = wh*17/28-2; px0[1] = ww*19/28; py0[1] = wh*9/28; // py0[1] = wh*9/28-2; px0[2] = ww*12/28; py0[2] = wh*14/28; px0[3] = ww*15/28; py0[3] = wh*9/28; // 仮想点(1と3の間) px0[4] = ww*17/28; py0[4] = wh*9/28; // フレーム(背面)軌跡の前にプロット 東側壁 fx0[0][0] = ww*16/28; fy0[0][0] = wh*5/28; fx0[0][1] = ww*22/28; fy0[0][1] = wh*5/28; fx0[0][2] = ww*22/28; fy0[0][2] = wh*13/28; fx0[0][3] = ww*16/28; fy0[0][3] = wh*13/28; fx0[0][4] = ww*16/28; fy0[0][4] = wh*5/28; // フレーム(背面)軌跡の前にプロット 北側壁 fx0[1][0] = ww*16/28; fy0[1][0] = wh*5/28; fx0[1][1] = ww*21/56; fy0[1][1] = wh*21/56; fx0[1][2] = ww*21/56; fy0[1][2] = wh*23/56; fx0[1][3] = ww*6/28; fy0[1][3] = wh*16/28; fx0[1][4] = ww*6/28; fy0[1][4] = wh*23/28; fx0[1][5] = ww*16/28; fy0[1][5] = wh*13/28; // フレーム(前面)軌跡のあとにプロット 南側壁 fx0[2][0] = ww*22/28; fy0[2][0] = wh*5/28; fx0[2][1] = ww*33/56; fy0[2][1] = wh*21/56; fx0[2][2] = ww*33/56; fy0[2][2] = wh*23/56; fx0[2][3] = ww*12/28; fy0[2][3] = wh*16/28; fx0[2][4] = ww*12/28; fy0[2][4] = wh*23/28; fx0[2][5] = ww*22/28; fy0[2][5] = wh*13/28; // フレーム(前面)軌跡のあとにプロット 南北の枠 真ん中上 fx0[3][0] = ww*21/56; fy0[3][0] = wh*21/56; fx0[3][1] = ww*33/56; fy0[3][1] = wh*21/56; // フレーム(前面)軌跡のあとにプロット 南北の枠 真ん中下 fx0[4][0] = ww*21/56; fy0[4][0] = wh*23/56; fx0[4][1] = ww*33/56; fy0[4][1] = wh*23/56; // フレーム(前面)軌跡のあとにプロット 南北の枠 西側上 fx0[5][0] = ww*6/28; fy0[5][0] = wh*16/28; fx0[5][1] = ww*12/28; fy0[5][1] = wh*16/28; // フレーム(前面)軌跡のあとにプロット 南北の枠 西側下 fx0[6][0] = ww*6/28; fy0[6][0] = wh*23/28; fx0[6][1] = ww*12/28; fy0[6][1] = wh*23/28; // 地面の点(未使用) lx0[0] = ww*16/28; ly0[0] = wh*13/28; lx0[1] = ww*6/28; ly0[1] = wh*23/28; lx0[2] = ww*12/28; ly0[2] = wh*23/28; lx0[3] = ww*22/28; ly0[3] = wh*13/28; lx0[4] = ww*16/28; ly0[4] = wh*13/28; // センサー可動点の初期化 for(i=0;i<32;i++){ for(j=0;j<16;j++){ px[i][j]=px0[i]; py[i][j]=py0[i]; } } } public void actionPerformed(ActionEvent e) { // ボタンがクリックされたとき、実行される。 if( e.getSource() == b1 ) { nsam[95]=0; repaint(); } if( e.getSource() == b2 ) { nsam[95]=nsam[95]+50; repaint(); } if( e.getSource() == b3 ) { refreshrate=(int)(refreshrate/2); repaint(); } if( e.getSource() == b4 ) { refreshrate=(int)(refreshrate*2); repaint(); } if( e.getSource() == b5 ) { nsam[95]=skip*sps; if(running == false){ running = true; if (timer == null){ timer = new Thread(this); timer.start(); } } repaint(); } if( e.getSource() == b6 ) { int j; // rto=(float)((max[16]+max[17]/2)/ww*4); // if(rto<(max[18]+max[17]/2)/wh*4)rto=(float)((max[18]+max[17]/2)/wh*4); rto=1; for(j=0;j<95;j++){ if(rto50)time[0][0]=time[0][0]-100; time0.set(Calendar.YEAR,time[0][0]+2000); date0 = time0.getTime(); mtime[0] = date0.getTime(); time1.set(Calendar.SECOND,time[1][5]); time1.set(Calendar.MINUTE,time[1][4]); time1.set(Calendar.HOUR_OF_DAY,time[1][3]); time1.set(Calendar.DAY_OF_MONTH,time[1][2]); time1.set(Calendar.MONTH,time[1][1]-1); if(time[1][0]>50)time[0][0]=time[1][0]-100; time1.set(Calendar.YEAR,time[1][0]+2000); date1 = time1.getTime(); mtime[1] = date1.getTime(); if(length<1)length = (int)((mtime[1]-mtime[0])/1000); while(length*sps>nsam[95]){ for(j=0;j<4;j++){ for(i=11;i>0;i--){ px[j][i]=px[j][i-1]; py[j][i]=py[j][i-1]; } loc[3*j]=(int)(sam[4*j][nsam[95]]/rto); loc[3*j+1]=(int)(sam[4*j+1][nsam[95]]/rto); loc[3*j+2]=(int)(sam[4*j+2][nsam[95]]/rto); } // センサー0〜3 可動点の位置を設定 loc[0]=NS,loc[1]=EW,loc[2]=UD // U E // | / // | / // +------ S(-N) // (N,E,U) -> px = -N + 1/2E , py = -1/2E - U px[0][0]=(int)(-loc[0]+loc[1]/2+px0[0]); py[0][0]=(int)(-loc[1]/2-loc[2]+py0[0]); px[1][0]=(int)(-loc[3]+loc[4]/2+px0[1]); py[1][0]=(int)(-loc[4]/2-loc[5]+py0[1]); px[2][0]=(int)(-loc[6]+loc[7]/2+px0[2]); py[2][0]=(int)(-loc[7]/2-loc[8]+py0[2]); px[3][0]=(int)(-loc[9]+loc[10]/2+px0[3]); py[3][0]=(int)(-loc[10]/2-loc[11]+py0[3]); // 仮想点(1と3の中点) 可動点の位置を設定 // px[4][0]=(int)(-(loc[3]+loc[9])/2+(loc[4]+loc[10])/2/2+px0[4]); py[4][0]=(int)(-(loc[4]+loc[10])/2/2-(loc[5]+loc[11])/2+py0[4]); /* px[0][0]=(int)(loc[1]+loc[0]/2+px0[0]); py[0][0]=(int)(-loc[0]/2-loc[2]+py0[0]); px[1][0]=(int)(loc[4]+loc[3]/2+px0[1]); py[1][0]=(int)(-loc[3]/2-loc[5]+py0[1]); px[2][0]=(int)(loc[7]+loc[6]/2+px0[2]); py[2][0]=(int)(-loc[6]/2-loc[8]+py0[2]); px[3][0]=(int)(loc[10]+loc[9]/2+px0[3]); py[3][0]=(int)(-loc[9]/2-loc[11]+py0[3]); px[4][0]=(int)(loc[13]+loc[12]/2+px0[4]); py[4][0]=(int)(-loc[12]/2-loc[14]+py0[4]); px[5][0]=(int)(loc[16]+loc[15]/2+px0[5]); py[5][0]=(int)(-loc[15]/2-loc[17]+py0[5]); px[6][0]=(int)(loc[19]+loc[18]/2+px0[6]); py[6][0]=(int)(-loc[18]/2-loc[20]+py0[6]); px[7][0]=(int)(loc[22]+loc[21]/2+px0[7]); py[7][0]=(int)(-loc[21]/2-loc[23]+py0[7]); px[8][0]=(int)(loc[25]+loc[24]/2+px0[8]); py[8][0]=(int)(-loc[24]/2-loc[26]+py0[8]); px[9][0]=(int)(loc[28]+loc[27]/2+px0[9]); py[9][0]=(int)(-loc[27]/2-loc[29]+py0[9]); px[10][0]=(int)(loc[31]+loc[30]/2+px0[10]); py[10][0]=(int)(-loc[30]/2-loc[32]+py0[10]); px[11][0]=(int)(loc[34]+loc[33]/2+px0[11]); py[11][0]=(int)(-loc[33]/2-loc[35]+py0[11]); px[12][0]=(int)(loc[37]+loc[36]/2+px0[12]); py[12][0]=(int)(-loc[36]/2-loc[38]+py0[12]); px[13][0]=(int)(loc[40]+loc[39]/2+px0[13]); py[13][0]=(int)(-loc[39]/2-loc[41]+py0[13]); px[14][0]=(int)(loc[43]+loc[42]/2+px0[14]); py[14][0]=(int)(-loc[42]/2-loc[44]+py0[14]); px[15][0]=(int)(loc[46]+loc[45]/2+px0[15]); py[15][0]=(int)(-loc[45]/2-loc[47]+py0[15]); px[16][0]=(int)(loc[49]+loc[48]/2+px0[16]); py[16][0]=(int)(-loc[48]/2-loc[50]+py0[16]); px[17][0]=(int)(loc[52]+loc[51]/2+px0[17]); py[17][0]=(int)(-loc[51]/2-loc[53]+py0[17]); px[18][0]=(int)(loc[1]+loc[0]/2+px0[18]); py[18][0]=(int)(-loc[0]/2-loc[2]+py0[18]); px[19][0]=(int)(loc[1]+loc[0]/2+px0[19]); py[19][0]=(int)(-loc[0]/2-loc[2]+py0[19]); px[20][0]=(int)(loc[1]+loc[0]/2+px0[20]); py[20][0]=(int)(-loc[0]/2-loc[2]+py0[20]); px[21][0]=(int)(loc[4]+loc[3]/2+px0[21]); py[21][0]=(int)(-loc[3]/2-loc[5]+py0[21]); px[22][0]=(int)(loc[4]+loc[3]/2+px0[22]); py[22][0]=(int)(-loc[3]/2-loc[5]+py0[22]); px[23][0]=(int)((loc[4]+3*loc[52])/4+(loc[3]+3*loc[51])/4/2+px0[23]); py[23][0]=(int)(-(loc[3]+3*loc[51])/4/2-(loc[5]+3*loc[53])/4+py0[23]); px[24][0]=(int)((loc[4]+loc[52])/2+(loc[3]+loc[51])/2/2+px0[24]); py[24][0]=(int)(-(loc[3]+loc[51])/2/2-(loc[5]+loc[53])/2+py0[24]); px[25][0]=(int)((3*loc[4]+loc[52])/4+(3*loc[3]+loc[51])/4/2+px0[25]); py[25][0]=(int)(-(3*loc[3]+loc[51])/4/2-(3*loc[5]+loc[53])/4+py0[25]); px[26][0]=(int)((loc[1]+2*loc[31])/3+(loc[0]+2*loc[30])/3/2+px0[26]); py[26][0]=(int)(-(loc[0]+2*loc[30])/3/2-(loc[2]+2*loc[32])/3+py0[26]); px[27][0]=(int)((2*loc[1]+loc[31])/3+(2*loc[0]+loc[30])/3/2+px0[27]); py[27][0]=(int)(-(2*loc[0]+loc[30])/3/2-(2*loc[2]+loc[32])/3+py0[27]); */ repaint(); try { Thread.sleep(refreshrate); } catch (InterruptedException e) {} nsam[95]++; } running = false; timer = null; } public void stop() { running = false; } public String getAppletInfo() { return "WIN viewer applet Copyright (c) 2003 by Takamori Ito and Laboratory for Earthquake Chemistry"; } public void readwin() { try{ URL url = new URL(x); InputStream fistream = url.openStream(); DataInputStream in = new DataInputStream(fistream); int c,i,j; short cs; byte cx,cy; float fc; int sizefile=0,sizesb,sized; int[] sr = new int[96]; //ゴミ生成しない? /* while((c=in.read())!=-1){sizefile++;} in.close();*/ // G.drawString("nsam:"+nsam,200,200); for(i=0;i<95;i++){ nsam[i]=0; sr[i]=1; } // fistream = url.openStream(); // in = new DataInputStream(fistream); while((sizesb=in.readInt())!=-1){ // sizesb=in.readInt(); // sizefile=sizefile-sizesb; sizefile=sizefile+sizesb; sizesb=sizesb-4; for(i=0;i<6;i++){ c=in.readByte(); time[1][i]=(c/16)*10+c%16; } for(i=0;i<95;i++){ nsamx=nsamx+nsam[i]; } if(nsamx==0){ for(i=0;i<6;i++){ time[0][i]=time[1][i]; } time0.set(Calendar.SECOND,time[1][5]); time0.set(Calendar.MINUTE,time[1][4]); time0.set(Calendar.HOUR_OF_DAY,time[1][3]); time0.set(Calendar.DAY_OF_MONTH,time[1][2]); time0.set(Calendar.MONTH,time[1][1]-1); if(time[0][0]>50)time[1][0]=time[1][0]-100; time0.set(Calendar.YEAR,time[1][0]+2000); date0 = time0.getTime(); for(j=4;j<95;j++){ nsam[j]=0; } } time1.set(Calendar.SECOND,time[1][5]); time1.set(Calendar.MINUTE,time[1][4]); time1.set(Calendar.HOUR_OF_DAY,time[1][3]); time1.set(Calendar.DAY_OF_MONTH,time[1][2]); time1.set(Calendar.MONTH,time[1][1]-1); if(time[1][0]>50)time[1][0]=time[1][0]-100; time1.set(Calendar.YEAR,time[1][0]+2000); date1 = time1.getTime(); sizesb=sizesb-6; nsam[0]=(int)((date1.getTime()-date0.getTime())*sps/blocks/1000); while(sizesb>0&&nsam[0]<15000){ ch=in.readUnsignedShort()-minch; if(ch<0||ch>94)ch=95; sizesb=sizesb-2; chh=in.readShort(); sized=chh/4096; sr[ch]=chh%4096; sizesb=sizesb-2; sps=sr[ch]; if(ch!=95&&nsam[ch]==0)nsam[ch]=(int)((date1.getTime()-date0.getTime())*sps/blocks/1000); if(ftype==2){ // sam[ch][nsam[ch]+1]=in.readFloat(); }else{ sam[ch][nsam[ch]+1]=in.readInt(); } if(ch!=95){ sam[ch][nsam[ch]]=sam[ch][nsam[ch]+1]; xtime[ch][nsam[ch]] = date1.getTime(); if(nsam[ch]==0){ max[ch]=sam[ch][nsam[ch]]; min[ch]=sam[ch][nsam[ch]]; }else{ if(sam[ch][nsam[ch]]>max[ch])max[ch]=sam[ch][nsam[ch]]; if(sam[ch][nsam[ch]]=0){ if(cs<0)cs=(short)(256+cs); c=c*256+cs; }else{ if(cs>0)cs=(short)(cs-256); c=c*256+cs; }*/ c=cs*256; c=c|((int)(cx)<<24)>>>24; if(ch!=95)sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c; sizesb=sizesb-3; }else if(sized==4){ if(ftype==2){ fc=in.readFloat(); // if(ch!=3)sam[ch][i+nsam[ch]]=fc; }else{ c=in.readInt(); if(ch!=3)sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c; } sizesb=sizesb-4; }else if(sized==0){ cx=in.readByte(); c=cx>>4; if(ch!=95){ sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c; xtime[ch][i+nsam[ch]] = date1.getTime()+i*1000*blocks/sr[ch]; if(sam[ch][i+nsam[ch]]>max[ch])max[ch]=sam[ch][i+nsam[ch]]; if(sam[ch][i+nsam[ch]]>4; if(ch!=95){ sam[ch][i+nsam[ch]]=sam[ch][i+nsam[ch]-1]+c; xtime[ch][i+nsam[ch]] = date1.getTime()+i*1000*blocks/sr[ch]; if(sam[ch][i+nsam[ch]]>max[ch])max[ch]=sam[ch][i+nsam[ch]]; if(sam[ch][i+nsam[ch]]max[ch])max[ch]=sam[ch][i+nsam[ch]]; if(sam[ch][i+nsam[ch]]50)time[0][0]=time[0][0]-100; time0.set(Calendar.YEAR,time[0][0]+2000); date0 = time0.getTime(); mtime[0] = time0.getTimeInMillis();*/ // date1 = time1.getTime(); // mtime[1] = time1.getTimeInMillis(); in.close(); url=null; in=null; sr=null; }catch(FileNotFoundException e){ // System.out.println("ファイルがありません。"); }catch(Exception e){ // System.out.println(e); } } public void update(Graphics ImG){ paint(ImG); } public void paint(Graphics ImG) { Color backc = new Color((backcn<<8)>>>24,(backcn<<16)>>>24,(backcn<<24)>>>24); Color base0c = new Color((base0cn<<8)>>>24,(base0cn<<16)>>>24,(base0cn<<24)>>>24); Color basec = new Color((basecn<<8)>>>24,(basecn<<16)>>>24,(basecn<<24)>>>24); Color linec = new Color((linecn<<8)>>>24,(linecn<<16)>>>24,(linecn<<24)>>>24); Color font1c = new Color((font1cn<<8)>>>24,(font1cn<<16)>>>24,(font1cn<<24)>>>24); Color font2c = new Color((font2cn<<8)>>>24,(font2cn<<16)>>>24,(font2cn<<24)>>>24); Font f12= new Font("Helvetica",Font.PLAIN,12); Font f16= new Font("Helvetica",Font.PLAIN,16); g.setFont(f12); setBackground(getBackground()); g.setColor(getBackground()); g.fillRect(0,wh,ww,18); setVisible(true); g.setColor(backc); g.fillRect(0,0,ww,wh); int i,j,k; time0.set(Calendar.SECOND,time[0][5]+skip); time0.set(Calendar.MINUTE,time[0][4]); time0.set(Calendar.HOUR_OF_DAY,time[0][3]); time0.set(Calendar.DAY_OF_MONTH,time[0][2]); time0.set(Calendar.MONTH,time[0][1]-1); if(time[0][0]>50)time[0][0]=time[0][0]-100; time0.set(Calendar.YEAR,time[0][0]+2000); date0 = time0.getTime(); mtime[0] = date0.getTime(); time1.set(Calendar.SECOND,time[1][5]); time1.set(Calendar.MINUTE,time[1][4]); time1.set(Calendar.HOUR_OF_DAY,time[1][3]); time1.set(Calendar.DAY_OF_MONTH,time[1][2]); time1.set(Calendar.MONTH,time[1][1]-1); if(time[1][0]>50)time[0][0]=time[1][0]-100; time1.set(Calendar.YEAR,time[1][0]+2000); date1 = time1.getTime(); mtime[1] = date1.getTime(); if(length<1)length = (int)((mtime[1]-mtime[0])/1000); // フレーム(背面)4本 g.setColor(Color.gray); for(k=0;k<4;k++){ g.drawLine(fx0[0][k],fy0[0][k],fx0[0][k+1],fy0[0][k+1]); } // フレーム(背面)5本 for(k=0;k<5;k++){ g.drawLine(fx0[1][k],fy0[1][k],fx0[1][k+1],fy0[1][k+1]); } g.setColor(Color.gray); // センサーオリジナル位置を結ぶ g.drawLine(px0[0],py0[0],px0[4],py0[4]); g.drawLine(px0[1],py0[1],px0[3],py0[3]); g.drawLine(px0[4],py0[4],px0[2],py0[2]); g.setColor(Color.gray); g.setFont(f12); g.setColor(Color.white); // センサー位置にクロス印 for(k=0;k<4;k++){ g.drawLine(px0[k]-7,py0[k]+7,px0[k]+7,py0[k]-7); g.drawLine(px0[k]-10,py0[k],px0[k]+10,py0[k]); g.drawLine(px0[k],py0[k]-10,px0[k],py0[k]+10); } g.setColor(Color.red); // センサー間(動線) g.drawLine(px[0][0],py[0][0],px[4][0],py[4][0]); g.drawLine(px[1][0],py[1][0],px[4][0],py[4][0]); g.drawLine(px[4][0],py[4][0],px[3][0],py[3][0]); g.drawLine(px[2][0],py[2][0],px[4][0],py[4][0]); g.setColor(Color.pink); // 軌跡とセンサーの丸印 for(k=0;k<4;k++){ for(j=0;j<10;j++){ g.drawLine(px[k][j],py[k][j],px[k][j+1],py[k][j+1]); } g.fillOval(px[k][0]-5,py[k][0]-5,10,10); } g.setColor(Color.lightGray); // 手前のフレーム描画 // フレーム(前面)5本 for(k=0;k<5;k++){ g.drawLine(fx0[2][k],fy0[2][k],fx0[2][k+1],fy0[2][k+1]); } // フレーム(前面)1本 for(k=0;k<1;k++){ g.drawLine(fx0[3][k],fy0[3][k],fx0[3][k+1],fy0[3][k+1]); } // フレーム(前面)1本 for(k=0;k<1;k++){ g.drawLine(fx0[4][k],fy0[4][k],fx0[4][k+1],fy0[4][k+1]); } // フレーム(前面)1本 for(k=0;k<1;k++){ g.drawLine(fx0[5][k],fy0[5][k],fx0[5][k+1],fy0[5][k+1]); } // フレーム(前面)1本 for(k=0;k<1;k++){ g.drawLine(fx0[6][k],fy0[6][k],fx0[6][k+1],fy0[6][k+1]); } g.setColor(Color.pink); g.drawString(((nsam[95]+1)*1000/sps-skip*1000)+" msec",10,30); g.setColor(Color.white); // g.drawLine((int)(10),(int)(wh-10),(int)(10+100/rto),(int)(wh-10)); // g.drawString("100microm",10,wh-15); // 方位 g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-20),(int)(wh-30)); g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-70),(int)(wh-80)); g.drawLine((int)(ww-70),(int)(wh-30),(int)(ww-45),(int)(wh-55)); //g.drawString("E",(int)(ww-20),(int)(wh-30)); //g.drawString("U",(int)(ww-70),(int)(wh-81)); //g.drawString("N",(int)(ww-45),(int)(wh-55)); g.drawString("S",(int)(ww-20),(int)(wh-30)); g.drawString("U",(int)(ww-70),(int)(wh-81)); g.drawString("E",(int)(ww-45),(int)(wh-55)); rto50=(int)(rto*50); g.drawString(rto50+"microm",ww-90,wh-10); g.setColor(font1c); g.drawString(st+" Start : "+date0.toString()+" --- length : "+(length+blocks)+" sec",10,14); g.setColor(Color.gray); g.drawString("SEISM",ww-47,wh+14); ImG.drawImage(Im,0,0,this); showStatus(comment); } }