亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? triangulation.java

?? Voronoi圖生成算法 ,Voronoi(沃洛諾依)多邊形網絡常常被用來做為計算機仿真模型.由于按照定義形成Voronoi多邊形網絡較難用程序實現,人們多采用Delauney(狄洛尼)三角形的方法完
?? JAVA
字號:
/*
 * Copyright (c) 2005 by L. Paul Chew.
 * 
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, subject to the following 
 * conditions:
 *
 * The above copyright notice and this permission notice shall be included 
 * in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
 * DEALINGS IN THE SOFTWARE.
 */

import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * A Triangulation on vertices (generic type V).
 * A Triangulation is a set of Simplices (see Simplex below).
 * For efficiency, we keep track of the neighbors of each Simplex.
 * Two Simplices are neighbors of they share a facet.
 * 
 * @author Paul Chew
 * 
 * Created July 2005.  Derived from an earlier, messier version.
 */
public class Triangulation {
    
    private HashMap neighbors;  // Maps Simplex to Set of neighbors
    
    /**
     * Constructor.
     * @param simplex the initial Simplex.
     */
    public Triangulation (Simplex simplex) {
        neighbors = new HashMap();
        neighbors.put(simplex, new HashSet());
    }
    
    /**
     * String representation.
     * Shows number of simplices currently in the Triangulation.
     * @return a String representing the Triangulation
     */
    public String toString () {
        return "Triangulation (with " + neighbors.size() + " elements)";
    }
    
    /**
     * Size (# of Simplices) in Triangulation.
     * @return the number of Simplices in this Triangulation
     */
    public int size () {
        return neighbors.size();
    }
    
    /**
     * True iff the simplex is in this Triangulation.
     * @param simplex the simplex to check
     * @return true iff the simplex is in this Triangulation
     */
    public boolean contains (Simplex simplex) {
        return this.neighbors.containsKey(simplex);
    }
    
    /**
     * Iterator.
     * @return an iterator for every Simplex in the Triangulation
     */
    public Iterator iterator () {
        return Collections.unmodifiableSet(this.neighbors.keySet()).iterator();
    }
    
    /**
     * Print stuff about a Triangulation.
     * Used for debugging.
     */
    public void printStuff () {
        boolean remember = Simplex.moreInfo;
        System.out.println("Neighbor data for " + this);
        for (Iterator it = neighbors.keySet().iterator(); it.hasNext();) {
            Simplex simplex = (Simplex) it.next();
            Simplex.moreInfo = true;
            System.out.print("    " + simplex + ":");
            Simplex.moreInfo = false;
            for (Iterator otherIt = ((Set) neighbors.get(simplex)).iterator(); 
                 otherIt.hasNext();)
                System.out.print(" " + otherIt.next());
            System.out.println();
        }
        Simplex.moreInfo = remember;
    }
    
    /* Navigation */
    
    /**
     * Report neighbor opposite the given vertex of simplex.
     * @param vertex a vertex of simplex
     * @param simplex we want the neighbor of this Simplex
     * @return the neighbor opposite vertex of simplex; null if none
     * @throws IllegalArgumentException if vertex is not in this Simplex
     */
    public Simplex neighborOpposite (Object vertex, Simplex simplex) {
        if (!simplex.contains(vertex))
            throw new IllegalArgumentException("Bad vertex; not in simplex");
        SimplexLoop: for (Iterator it = ((Set) neighbors.get(simplex)).iterator(); 
                          it.hasNext();) {
            Simplex s = (Simplex) it.next();
            for (Iterator otherIt = simplex.iterator(); otherIt.hasNext(); ) {
                Object v = otherIt.next();
                if (v.equals(vertex)) continue;
                if (!s.contains(v)) continue SimplexLoop;
            }
            return s;
        }
        return null;
    }
    
    /**
     * Report neighbors of the given simplex.
     * @param simplex a Simplex
     * @return the Set of neighbors of simplex
     */
    public Set neighbors (Simplex simplex) {
        return new HashSet((Set) this.neighbors.get(simplex));
    }
    
    /* Modification */
    
    /**
     * Update by replacing one set of Simplices with another.
     * Both sets of simplices must fill the same "hole" in the
     * Triangulation.
     * @param oldSet set of Simplices to be replaced
     * @param newSet set of replacement Simplices
     */
    public void update (Set oldSet, 
                        Set newSet) {
        // Collect all simplices neighboring the oldSet
        Set allNeighbors = new HashSet();
        for (Iterator it = oldSet.iterator(); it.hasNext();)
            allNeighbors.addAll((Set) neighbors.get((Simplex) it.next()));
        // Delete the oldSet
        for (Iterator it = oldSet.iterator(); it.hasNext();) {
            Simplex simplex = (Simplex) it.next();
            for (Iterator otherIt = ((Set) neighbors.get(simplex)).iterator(); 
                 otherIt.hasNext();)
                ((Set) neighbors.get(otherIt.next())).remove(simplex);
            neighbors.remove(simplex);
            allNeighbors.remove(simplex);
        }
        // Include the newSet simplices as possible neighbors
        allNeighbors.addAll(newSet);
        // Create entries for the simplices in the newSet
        for (Iterator it = newSet.iterator(); it.hasNext();)
            neighbors.put((Simplex) it.next(), new HashSet());
        // Update all the neighbors info
        for (Iterator it = newSet.iterator(); it.hasNext();) {
            Simplex s1 = (Simplex) it.next();
            for (Iterator otherIt = allNeighbors.iterator(); otherIt.hasNext();) {
                Simplex s2 = (Simplex) otherIt.next();
                if (!s1.isNeighbor(s2)) continue;
                ((Set) neighbors.get(s1)).add(s2);
                ((Set) neighbors.get(s2)).add(s1);
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区精品视频| 日韩和欧美一区二区三区| 在线播放中文字幕一区| 91在线观看成人| 欧美日韩亚洲丝袜制服| 91色综合久久久久婷婷| 91麻豆自制传媒国产之光| 99精品桃花视频在线观看| eeuss鲁片一区二区三区在线观看| 国产成人丝袜美腿| 成人一道本在线| 一本色道久久综合亚洲aⅴ蜜桃 | 久久一留热品黄| 精品美女被调教视频大全网站| 日韩欧美中文字幕公布| 久久你懂得1024| 亚洲欧洲日韩在线| 夜夜精品浪潮av一区二区三区| 午夜精品久久久久久久蜜桃app| 日韩国产欧美三级| 国产综合色在线| 成人午夜在线免费| 欧美亚洲国产一区二区三区va | 精品国产一区二区三区久久影院| 26uuu国产一区二区三区| 国产精品理论片在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 成人h版在线观看| 欧洲精品一区二区三区在线观看| 欧美日韩电影在线播放| 久久久精品tv| 亚洲综合免费观看高清完整版 | 中文字幕不卡一区| 亚洲动漫第一页| 欧美午夜电影在线播放| 欧美高清精品3d| 欧美国产禁国产网站cc| 亚洲国产成人精品视频| 国产一区中文字幕| 在线观看三级视频欧美| 精品播放一区二区| 亚洲午夜激情av| 成人永久免费视频| 欧美刺激午夜性久久久久久久| 国产精品无圣光一区二区| 视频一区二区欧美| 99免费精品视频| 精品理论电影在线| 亚洲二区在线观看| 99国产精品久久久久久久久久| 日韩午夜激情电影| 亚洲18色成人| 91精彩视频在线| 国产精品欧美久久久久无广告| 琪琪久久久久日韩精品| 欧美性色黄大片手机版| 一区在线播放视频| 成人一级视频在线观看| 久久综合久久综合久久综合| 五月天激情综合| 欧美日韩免费电影| 亚洲一区在线电影| 在线观看成人免费视频| 亚洲欧美视频在线观看| 成人免费毛片aaaaa**| 久久综合色婷婷| 美女视频黄 久久| 日韩一级成人av| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美一区二区三区在线看蜜臀| 一级特黄大欧美久久久| 91在线观看视频| 中文字幕日韩一区| 92精品国产成人观看免费| 中文av字幕一区| www.性欧美| 亚洲靠逼com| 91久久精品一区二区| 一区二区三区高清在线| 欧美私人免费视频| 亚洲国产日韩a在线播放性色| 色域天天综合网| 成人网在线播放| 久久久www免费人成精品| 国产精品一区一区三区| 国产日韩欧美综合在线| 国产福利精品一区二区| 国产精品人妖ts系列视频| av亚洲精华国产精华| 一区二区免费在线| 7777精品伊人久久久大香线蕉完整版| 亚欧色一区w666天堂| 91精品国产乱| 国产久卡久卡久卡久卡视频精品| 久久影院视频免费| a美女胸又www黄视频久久| 亚洲理论在线观看| 欧美一区二区三区四区视频| 国产一区二区精品久久99| 亚洲国产精品av| 欧美综合亚洲图片综合区| 日本女人一区二区三区| 2017欧美狠狠色| 色综合天天视频在线观看| 视频一区国产视频| 国产日韩欧美精品综合| 日本高清不卡一区| 精品无人区卡一卡二卡三乱码免费卡 | 日本亚洲免费观看| 久久久精品综合| 欧美在线播放高清精品| 精品一区二区久久久| 亚洲人成网站精品片在线观看 | 精品一区二区三区蜜桃| 中文字幕综合网| 欧美mv日韩mv亚洲| 在线观看一区二区精品视频| 久久国产精品无码网站| 夜色激情一区二区| 日本一区二区三区四区在线视频| 欧美色视频在线| 风间由美一区二区三区在线观看| 午夜不卡av免费| 亚洲图片另类小说| 久久精品免费在线观看| 欧美三级日韩三级国产三级| 成人av中文字幕| 久久99精品网久久| 亚洲午夜精品在线| 国产精品久久久99| www国产亚洲精品久久麻豆| 欧洲国产伦久久久久久久| 成人午夜碰碰视频| 国产一区二区三区美女| 日产精品久久久久久久性色| 亚洲欧洲制服丝袜| 中文久久乱码一区二区| 欧美不卡在线视频| 日韩午夜在线播放| 在线播放91灌醉迷j高跟美女 | 亚洲资源在线观看| 中文字幕日本乱码精品影院| 久久人人爽人人爽| 日韩欧美高清在线| 日韩视频123| 日韩写真欧美这视频| 欧美日本视频在线| 欧美日韩高清一区二区| 欧美日韩在线免费视频| 欧美三电影在线| 欧美在线不卡视频| 欧美日韩一区三区四区| 欧美亚洲另类激情小说| 欧美性xxxxx极品少妇| 在线观看日韩国产| 欧美另类一区二区三区| 在线不卡a资源高清| 日韩一区二区精品葵司在线 | 国产一区免费电影| 国产精品综合在线视频| 成人自拍视频在线| 99视频一区二区| 欧洲精品一区二区| 制服.丝袜.亚洲.另类.中文| 日韩一二三四区| 国产午夜三级一区二区三| 欧美国产日产图区| 亚洲精品v日韩精品| 亚洲午夜久久久久久久久电影网 | 久久久久久久免费视频了| 亚洲精品在线免费观看视频| 国产三级一区二区三区| 一色屋精品亚洲香蕉网站| 亚洲国产一区二区三区| 日韩av网站免费在线| 国产精品主播直播| 色哟哟国产精品| 欧美一区二区三区视频在线观看| 久久综合色之久久综合| 最新不卡av在线| 蜜臀精品一区二区三区在线观看| 国产一区二区三区观看| 色香色香欲天天天影视综合网| 欧美日韩国产123区| www亚洲一区| 亚洲一区二区四区蜜桃| 韩国av一区二区三区| 色综合天天狠狠| 精品精品欲导航| 亚洲在线观看免费| 狠狠久久亚洲欧美| 欧美亚洲国产bt| 国产免费观看久久| 日本aⅴ免费视频一区二区三区| 国产成人亚洲综合a∨猫咪| 欧美在线观看视频在线| 国产农村妇女毛片精品久久麻豆| 亚洲综合色视频| 成人激情校园春色| 欧美成人猛片aaaaaaa|