4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.model;
10 import java.util.ArrayList;
11 import java.util.Iterator;
12 import java.util.List;
17 public class Surface implements SerialNumbered, Iterable<Vertex> {
19 private Vertex vertex1;
20 private Vertex vertex2;
21 private Vertex vertex3;
23 private int serialNo = -1;
39 * @throws IllegalArgumentException 重複する頂点が引数に含まれた
41 public void setTriangle(Vertex vertex1, Vertex vertex2, Vertex vertex3)
42 throws IllegalArgumentException{
43 if(vertex1 != null && (vertex1 == vertex2 || vertex1 == vertex3)){
44 throw new IllegalArgumentException();
46 if(vertex2 != null && vertex2 == vertex3){
47 throw new IllegalArgumentException();
50 this.vertex1 = vertex1;
51 this.vertex2 = vertex2;
52 this.vertex3 = vertex3;
59 * @param store 頂点格納用配列。nullもしくは3要素に満たない場合は無視され、
61 * @return 先頭3要素に3頂点が収められた配列。未設定要素にはnullが入る。
62 * 引数が長さ3以上の配列であれば引数と同じ配列が返る。
64 public Vertex[] getTriangle(Vertex[] store){
66 if(store == null || store.length < 3){
67 result = new Vertex[3];
72 result[0] = this.vertex1;
73 result[1] = this.vertex2;
74 result[2] = this.vertex3;
83 public Vertex getVertex1(){
91 public Vertex getVertex2(){
99 public Vertex getVertex3(){
106 * 反復子がnullを返す可能性もありうる。
107 * @return {@inheritDoc}
110 public Iterator<Vertex> iterator(){
111 List<Vertex> list = new ArrayList<Vertex>(3);
113 list.add(this.vertex1);
114 list.add(this.vertex2);
115 list.add(this.vertex3);
117 return list.iterator();
121 * 3頂点全てが設定されているか判定する。
122 * @return 3頂点とも非nullが設定されていればtrue
124 public boolean isCompleted(){
125 if( this.vertex1 != null
126 && this.vertex2 != null
127 && this.vertex3 != null ){
135 * @param num {@inheritDoc}
138 public void setSerialNumber(int num){
145 * @return {@inheritDoc}
148 public int getSerialNumber(){
149 return this.serialNo;
154 * @return {@inheritDoc}
157 public String toString(){
158 StringBuilder result = new StringBuilder();
160 result.append("Surface(")
161 .append(getSerialNumber())
165 result.append(" VID=[")
166 .append(this.vertex1.getSerialNumber())
168 .append(this.vertex2.getSerialNumber())
170 .append(this.vertex3.getSerialNumber())
174 return result.toString();