This summary provides the key details about the document in 3 sentences:
The document describes an algorithm for performing Constructive Solid Geometry (CSG) operations like union, intersection, and difference on 3D polyhedral objects constructed from convex polygons. The algorithm first subdivides polygons so they do not intersect, then classifies each polygon as inside, outside or on the boundary of the other object. It uses this classification to determine which polygons should be retained or deleted to produce the result of the specified CSG operation.
ShaderX³: Geometry Manipulation - Morphing between two different objectsRonny Burkersroda
This document discusses techniques for morphing between 3D meshes, specifically vertex tweening. It describes how vertex tweening can be used to independently move vertices between source and destination positions over time using a blending factor. However, vertex tweening alone has limitations as it requires start and target meshes to have identical structure. The document then describes how to project vertices from one mesh to another to calculate relative destination positions, allowing morphing between meshes of different structure. It provides formulas and examples of implementing this using DirectX.
Slide for study session given by Dr. Enrico Rinaldi at Arithmer inc.
It is a summary of recent methods for real-time instance segmentation "YOLACT", which is especially useful in robotics.
Arithmer株式会社は東京大学大学院数理科学研究科発の数学の会社です。私達は現代数学を応用して、様々な分野のソリューションに、新しい高度AIシステムを導入しています。AIをいかに上手に使って仕事を効率化するか、そして人々の役に立つ結果を生み出すのか、それを考えるのが私たちの仕事です。
Arithmer began at the University of Tokyo Graduate School of Mathematical Sciences. Today, our research of modern mathematics and AI systems has the capability of providing solutions when dealing with tough complex issues. At Arithmer we believe it is our job to realize the functions of AI through improving work efficiency and producing more useful results for society.
New Chaotic Substation and Permutation Method for Image Encryptiontayseer Karam alshekly
New Chaotic Substation and Permutation Method for Image Encryption is introduced based on combination between Block Cipher and chaotic map. The new algorithm encrypts and decrypts a block of 500 byte. Each block is firstly permuted by using the hyper-chaotic map and then the result is substituted using 1D Bernoulli map. Finally the resulted block is XORed with the key block. The proposed cipher image subjected to number of tests which are the security analysis (key space analysis and key sensitivity analysis) and statistical attack analysis (histogram, correlation, and differential attack and information entropy) and all results show that the proposed encryption scheme is secure because of its large key space; it’s highly sensitivity to the cipher keys and plain-images.
This document discusses graceful graph labelings and their applications. It begins with an introduction that defines graph labelings and graceful labelings. It then examines whether specific graph types like paths, cycles, and trees admit graceful labelings. The document outlines algorithms for determining graceful labelings and describes applications in fields like communication networks, sensor networks, and X-ray crystallography where determining graceful labelings can help address problems like channel allocation and network addressing. It concludes by emphasizing how graph labelings are useful tools in communication-related domains.
The document describes a new GIS tool that classifies lands around selected monuments using texture analysis and machine learning. The tool extracts sub-images around the monument, calculates texture features using GLCM, and classifies the lands using minimum distance classification to identify flat areas for constructing buildings like museums or visitor centers. Key steps include feature extraction using GLCM, calculating metrics like entropy and correlation, and classifying new images based on closest texture feature vectors in the training database.
For the processing of data such as with 3D printing, Virtual Reality (VR) and
Augmented Reality (AR), there is a need to seek technology which accurately and quickly analyzes the
three-dimensional structures including that of complicated 3D forms. However, unlike in 2D situations
when there are few data points, there is not yet an established method for processing it quickly for 3D
forms due to the fact the objects constructing it are complicated as well as the fact that there is a lot of
data points within the space. Generally, when illustrating a complicated form, a method is used
whereby an object with the complicated form is generated using several primitive shapes. This method
is used in various 3D modelling software because the position of the object can be intuitively and
freely changed and since it can be easily written within DirectX or Java 3D, OpenGL, etc. In this
thesis, it was shown that by using GPGPU (General-Purpose computing on Graphics Processing
Units) in respect of an algorithm with a solid angle, the inside-outside judgement could be conducted
quickly. Specifically, a measurement of inside-outside judgement processing was made for
complicated shapes created from several primitive shapes as well as the measurement of processing
time of several primitive shapes.
The document outlines a framework for mining spatial co-location patterns from transaction-type data. It begins by discussing related work on existing approaches, including transaction-free and transaction-based methods. It then defines a new type of transaction-type data called a Spatial Co-location Transaction (SCT) to address limitations in previous approaches. The proposed framework first generates all SCTs from a spatial dataset, then applies association analysis methods to the SCTs to extract spatial co-location patterns. Both binary and quantitative analysis techniques are described to analyze SCTs and identify meaningful co-location patterns.
Line Detection is computationally more intense than humans often would
expect. A graphics processing unit (GPU) can meet this need with substantial computational power, but the classic algorithmic approaches to line detection are often of a serial nature
and/or
utilize statistical sampling that cannot provide deterministic detection guarantuees.
Our talk presents a line detection algorithm that is able to detect lines of any angle, throughout the image. It is as parallel as the number of given image pixels multiplied by the
number of potential line angle bins. In contrast to the Hough transform, it is able to locate start and end of found line segments as well. Its redundant image accesses and bilinear
interpolations needed for
the multi-angle edge detection are managed by the texture cache, conserving DRAM memory bandwidth and computational complexity.
It is based on local edge detection filtering to fill small line angle candidates, followed by the inference of line primitives by a segmented scan, all happening in a data-parallel
fashion.
The output is a 2D array of line segments, providing the length of all line segments that originate from a given 2D position and a given line angle bin. This line segment map can then
be used to either infer higher-level vector symbols built from line primitives, again in a data-parallel fashion, using either GPU atomics or a data compaction algorithm in stream
fashion such as HistoPyramids. We exemplify this with the detection of parallel lines and quadriliterals.
While the algorithm's implementation benefits from atomics and shared memory, the basic algorithmic implementation is so simple that it can even be implemented on OpenGL ES 2.0 hardware
such as mobile phones.
Through a WebGL implementation, the line detection can even be applied to HTML5-based
camera input, providing a platform portable approach to low-level computer vision, and, in continuation, augmented reality and symbol detection on mobile phones.
https://www.geofront.eu/demos/lines
ShaderX³: Geometry Manipulation - Morphing between two different objectsRonny Burkersroda
This document discusses techniques for morphing between 3D meshes, specifically vertex tweening. It describes how vertex tweening can be used to independently move vertices between source and destination positions over time using a blending factor. However, vertex tweening alone has limitations as it requires start and target meshes to have identical structure. The document then describes how to project vertices from one mesh to another to calculate relative destination positions, allowing morphing between meshes of different structure. It provides formulas and examples of implementing this using DirectX.
Slide for study session given by Dr. Enrico Rinaldi at Arithmer inc.
It is a summary of recent methods for real-time instance segmentation "YOLACT", which is especially useful in robotics.
Arithmer株式会社は東京大学大学院数理科学研究科発の数学の会社です。私達は現代数学を応用して、様々な分野のソリューションに、新しい高度AIシステムを導入しています。AIをいかに上手に使って仕事を効率化するか、そして人々の役に立つ結果を生み出すのか、それを考えるのが私たちの仕事です。
Arithmer began at the University of Tokyo Graduate School of Mathematical Sciences. Today, our research of modern mathematics and AI systems has the capability of providing solutions when dealing with tough complex issues. At Arithmer we believe it is our job to realize the functions of AI through improving work efficiency and producing more useful results for society.
New Chaotic Substation and Permutation Method for Image Encryptiontayseer Karam alshekly
New Chaotic Substation and Permutation Method for Image Encryption is introduced based on combination between Block Cipher and chaotic map. The new algorithm encrypts and decrypts a block of 500 byte. Each block is firstly permuted by using the hyper-chaotic map and then the result is substituted using 1D Bernoulli map. Finally the resulted block is XORed with the key block. The proposed cipher image subjected to number of tests which are the security analysis (key space analysis and key sensitivity analysis) and statistical attack analysis (histogram, correlation, and differential attack and information entropy) and all results show that the proposed encryption scheme is secure because of its large key space; it’s highly sensitivity to the cipher keys and plain-images.
This document discusses graceful graph labelings and their applications. It begins with an introduction that defines graph labelings and graceful labelings. It then examines whether specific graph types like paths, cycles, and trees admit graceful labelings. The document outlines algorithms for determining graceful labelings and describes applications in fields like communication networks, sensor networks, and X-ray crystallography where determining graceful labelings can help address problems like channel allocation and network addressing. It concludes by emphasizing how graph labelings are useful tools in communication-related domains.
The document describes a new GIS tool that classifies lands around selected monuments using texture analysis and machine learning. The tool extracts sub-images around the monument, calculates texture features using GLCM, and classifies the lands using minimum distance classification to identify flat areas for constructing buildings like museums or visitor centers. Key steps include feature extraction using GLCM, calculating metrics like entropy and correlation, and classifying new images based on closest texture feature vectors in the training database.
For the processing of data such as with 3D printing, Virtual Reality (VR) and
Augmented Reality (AR), there is a need to seek technology which accurately and quickly analyzes the
three-dimensional structures including that of complicated 3D forms. However, unlike in 2D situations
when there are few data points, there is not yet an established method for processing it quickly for 3D
forms due to the fact the objects constructing it are complicated as well as the fact that there is a lot of
data points within the space. Generally, when illustrating a complicated form, a method is used
whereby an object with the complicated form is generated using several primitive shapes. This method
is used in various 3D modelling software because the position of the object can be intuitively and
freely changed and since it can be easily written within DirectX or Java 3D, OpenGL, etc. In this
thesis, it was shown that by using GPGPU (General-Purpose computing on Graphics Processing
Units) in respect of an algorithm with a solid angle, the inside-outside judgement could be conducted
quickly. Specifically, a measurement of inside-outside judgement processing was made for
complicated shapes created from several primitive shapes as well as the measurement of processing
time of several primitive shapes.
The document outlines a framework for mining spatial co-location patterns from transaction-type data. It begins by discussing related work on existing approaches, including transaction-free and transaction-based methods. It then defines a new type of transaction-type data called a Spatial Co-location Transaction (SCT) to address limitations in previous approaches. The proposed framework first generates all SCTs from a spatial dataset, then applies association analysis methods to the SCTs to extract spatial co-location patterns. Both binary and quantitative analysis techniques are described to analyze SCTs and identify meaningful co-location patterns.
Line Detection is computationally more intense than humans often would
expect. A graphics processing unit (GPU) can meet this need with substantial computational power, but the classic algorithmic approaches to line detection are often of a serial nature
and/or
utilize statistical sampling that cannot provide deterministic detection guarantuees.
Our talk presents a line detection algorithm that is able to detect lines of any angle, throughout the image. It is as parallel as the number of given image pixels multiplied by the
number of potential line angle bins. In contrast to the Hough transform, it is able to locate start and end of found line segments as well. Its redundant image accesses and bilinear
interpolations needed for
the multi-angle edge detection are managed by the texture cache, conserving DRAM memory bandwidth and computational complexity.
It is based on local edge detection filtering to fill small line angle candidates, followed by the inference of line primitives by a segmented scan, all happening in a data-parallel
fashion.
The output is a 2D array of line segments, providing the length of all line segments that originate from a given 2D position and a given line angle bin. This line segment map can then
be used to either infer higher-level vector symbols built from line primitives, again in a data-parallel fashion, using either GPU atomics or a data compaction algorithm in stream
fashion such as HistoPyramids. We exemplify this with the detection of parallel lines and quadriliterals.
While the algorithm's implementation benefits from atomics and shared memory, the basic algorithmic implementation is so simple that it can even be implemented on OpenGL ES 2.0 hardware
such as mobile phones.
Through a WebGL implementation, the line detection can even be applied to HTML5-based
camera input, providing a platform portable approach to low-level computer vision, and, in continuation, augmented reality and symbol detection on mobile phones.
https://www.geofront.eu/demos/lines
This document discusses hierarchical clustering methods, which arrange clusters in a nested tree structure. It describes bottom-up and top-down approaches for hierarchical clustering. Bottom-up starts with each object as a cluster and merges them into larger clusters, while top-down separates all objects into distinct clusters that are successively merged. Various distance measures for determining cluster similarity are presented, such as distance between centroids and Ward's method which minimizes variance.
The document discusses different methods for partitioning data into clusters. It describes hierarchical, density-based, grid-based, and model-based partitioning methods. It then explains the k-means and k-medoids partitioning algorithms in more detail, outlining the basic steps of assigning objects to clusters and updating centroids or medoids. Finally, it summarizes the Birch, ROCK, and CURE clustering algorithms.
This document proposes a dynamic clustering algorithm using fuzzy c-means clustering. It begins with an introduction to fuzzy c-means clustering and its limitations when the chosen number of clusters is incorrect. It then proposes a dynamic clustering algorithm that starts with a fixed number of clusters but can automatically increase the number of clusters during iterations based on the data, improving purity. The algorithm is described and examples are provided to illustrate its effectiveness at forming clear clusters after iterations and determining when clustering has terminated.
Types of clustering and different types of clustering algorithmsPrashanth Guntal
The document discusses different types of clustering algorithms:
1. Hard clustering assigns each data point to one cluster, while soft clustering allows points to belong to multiple clusters.
2. Hierarchical clustering builds clusters hierarchically in a top-down or bottom-up approach, while flat clustering does not have a hierarchy.
3. Model-based clustering models data using statistical distributions to find the best fitting model.
It then provides examples of specific clustering algorithms like K-Means, Fuzzy K-Means, Streaming K-Means, Spectral clustering, and Dirichlet clustering.
Clustering algorithms are a type of unsupervised learning that groups unlabeled data points together based on similarities. There are many different clustering methods that can handle numeric and/or symbolic data in either hierarchical or flat clustering structures. One simple and commonly used algorithm is k-means clustering, which assigns data points to k clusters based on minimizing distances between points and assigned cluster centers. K-means clustering has advantages of being simple and automatically assigning data points but has disadvantages such as needing to pre-specify the number of clusters and being sensitive to outliers.
1. The document presents a new approach for steganography detection using a combination of Fisher's linear discriminant function (FLD) and radial basis function neural network (RBF).
2. In the training phase, FLD is used to project high-dimensional image data onto a lower dimensional space, then an RBF network is trained to classify images as containing hidden data or not.
3. Experiments show the combined FLD-RBF method provides promising results for steganography detection compared to existing supervised methods, though extracting the hidden information remains challenging.
The main goal of cluster analysis is to classify elements into groupsbased on their similarity. Clustering has many applications such as astronomy, bioinformatics, bibliography, and pattern recognition. In this paper, a survey of clustering methods and techniques and identification of advantages and disadvantages of these methods are presented to give a solid background to choose the best method to extract strong association rules.
This document discusses different types of clustering techniques used in machine learning. It describes clustering as an unsupervised learning method that groups similar data points together. The main types covered are hard clustering, soft clustering, density-based clustering, hierarchical clustering, and partitioning-based clustering like k-means. K-means and hierarchical clustering are explained in more detail, including examples of how they work. Agglomerative and divisive hierarchical clustering are two approaches defined.
Hierarchical clustering is a method of cluster analysis that seeks to build a hierarchy of clusters. There are two types of hierarchical clustering methods: divisive, which starts with all observations in one cluster and splits recursively; and agglomerative, which starts with each observation in its own cluster and merges pairs of clusters as it moves up the hierarchy. Popular algorithms like BIRCH and CURE were introduced to improve upon hierarchical clustering methods by handling large datasets more efficiently and accounting for clusters with irregular shapes. However, hierarchical clustering still has weaknesses like inability to undo merges and poor scaling to large datasets.
IRJET- Finding Dominant Color in the Artistic Painting using Data Mining ...IRJET Journal
This document discusses finding the dominant color in an artistic painting using data mining techniques. It proposes using k-means clustering via the OpenCV library in Python to cluster pixels in the image by color and determine the dominant color cluster. The document provides background on k-means clustering and other clustering algorithms. It then describes applying a faster k-means algorithm to the image pixels to efficiently identify the dominant color in 2-3 times fewer iterations than standard k-means. The proposed system architecture involves preprocessing the image, extracting pixel vectors, clustering the pixels into color groups using fast k-means, and identifying the dominant color cluster.
Clustering Using Shared Reference Points Algorithm Based On a Sound Data ModelWaqas Tariq
A novel clustering algorithm CSHARP is presented for the purpose of finding clusters of arbitrary shapes and arbitrary densities in high dimensional feature spaces. It can be considered as a variation of the Shared Nearest Neighbor algorithm (SNN), in which each sample data point votes for the points in its k-nearest neighborhood. Sets of points sharing a common mutual nearest neighbor are considered as dense regions/ blocks. These blocks are the seeds from which clusters may grow up. Therefore, CSHARP is not a point-to-point clustering algorithm. Rather, it is a block-to-block clustering technique. Much of its advantages come from these facts: Noise points and outliers correspond to blocks of small sizes, and homogeneous blocks highly overlap. This technique is not prone to merge clusters of different densities or different homogeneity. The algorithm has been applied to a variety of low and high dimensional data sets with superior results over existing techniques such as DBScan, K-means, Chameleon, Mitosis and Spectral Clustering. The quality of its results as well as its time complexity, rank it at the front of these techniques.
This document discusses parallelizing image thinning algorithms through topological operators on shared memory parallel machines. It presents an approach that combines split-distribute-merge strategy with mixed data and thread parallelism. The methodology was tested on 2D grayscale images using a shared memory machine with 8 CPUs. The results showed a 6.2x speedup with efficient parallel implementation.
Big data Clustering Algorithms And StrategiesFarzad Nozarian
The document discusses various algorithms for big data clustering. It begins by covering preprocessing techniques such as data reduction. It then covers hierarchical, prototype-based, density-based, grid-based, and scalability clustering algorithms. Specific algorithms discussed include K-means, K-medoids, PAM, CLARA/CLARANS, DBSCAN, OPTICS, MR-DBSCAN, DBCURE, and hierarchical algorithms like PINK and l-SL. The document emphasizes techniques for scaling these algorithms to large datasets, including partitioning, sampling, approximation strategies, and MapReduce implementations.
A Density Control Based Adaptive Hexahedral Mesh Generation Algorithmijeei-iaes
This document summarizes an adaptive hexahedral mesh generation algorithm that uses density control. The algorithm involves 5 main steps: 1) Identifying the boundaries of the solid model, 2) Constructing refinement fields based on density metrics and generating an initial grid structure, 3) Generating a jagged core mesh by removing exterior elements, 4) Matching the core mesh surfaces to the solid model surfaces, 5) Improving mesh quality using optimization techniques. The algorithm aims to generate high quality hexahedral meshes with reasonably distributed density. It uses curvature and thickness criteria to refine the initial grid structure adaptively before generating the core mesh and performing surface matching and quality optimization.
Grid based method & model based clustering methodrajshreemuthiah
The document discusses several grid-based, density-based, and conceptual clustering algorithms. Grid-based approaches like STING and WAVECLUSTER cluster data by quantizing space into grids or cells. CLIQUE uses a grid-based approach to identify dense units of data. Conceptual clustering algorithms like COBWEB create hierarchical cluster trees to classify objects based on attribute probabilities.
This document proposes a model for applying predictive data mining and associative rule mining to spatio-temporal data that is highly variable. It represents the data using a "motley matrix" and "multi-version optional quad tree" data structures to efficiently handle the large and changing data. The model can be used to classify points based on how they change over time, and to mine associative rules from patterns in how points change spatially and temporally across instances.
Unsupervised Learning: Similarities and distance functions for IoT dataGiampaoloCasolla
(1) Researchers studied visitor behavior data from a museum in Italy collected using an IoT system to track visitor paths and time spent. The dataset includes visiting paths and time spent for 19,000 users.
(2) The researchers considered hierarchical clustering and k-medoids (PAM) algorithms to cluster the unlabeled data. They analyzed four string similarity functions and Euclidean distance to cluster the path and time features.
(3) The researchers compared the clustering methods using an F-measure heatmap to determine the most accurate approach for clustering the IoT behavior data.
Application of stochastic modelling in bioinformaticsSpyros Ktenas
This document discusses stochastic modeling and its applications in bioinformatics. It defines stochastic models and processes, and explains how they differ from deterministic models in accounting for uncertainty. Some examples of stochastic modeling approaches described include stochastic process algebra using tools like π-calculus and Petri nets, Markov models including Markov chains and hidden Markov models, and BioAmbients for modeling biological systems with mobile boundaries. The document argues that stochastic methods are better suited than deterministic ones for describing complex and dynamically evolving biological systems.
This document compares three image restoration techniques - Iterated Geometric Harmonics, Markov Random Fields, and Wavelet Decomposition - for removing noise from images. It describes each technique and the process used to test them. Noise was artificially added to images using different noise generation functions. Wavelet Decomposition and Markov Random Fields were then used to detect the noise locations. These noise locations were then used to create versions of the noisy images suitable for reconstruction via Iterated Geometric Harmonics. The reconstructed images were then compared to the original to evaluate the performance of each technique.
VARIATIONAL MONTE-CARLO APPROACH FOR ARTICULATED OBJECT TRACKINGcscpconf
In this paper, we describe a novel variational Monte Carlo approach for modeling and tracking body parts of articulated objects. An articulated object (human target) is represented as a
dynamic Markov network of the different constituent parts. The proposed approach combines local information of individual body parts and other spatial constraints influenced by
neighboring parts. The movement of the relative parts of the articulated body is modeled with local information of displacements from the Markov network and the global information from other neighboring parts. We explore the effect of certain model parameters (including the number of parts tracked; number of Monte-Carlo cycles, etc.) on system accuracy and show that ourvariational Monte Carlo approach achieves better efficiency and effectiveness compared to
other methods on a number of real-time video datasets containing single targets
VARIATIONAL MONTE-CARLO APPROACH FOR ARTICULATED OBJECT TRACKINGcsandit
In this paper, we describe a novel variational Monte Carlo approach for modeling and tracking
body parts of articulated objects. An articulated object (human target) is represented as a
dynamic Markov network of the different constituent parts. The proposed approach combines
local information of individual body parts and other spatial constraints influenced by
neighboring parts. The movement of the relative parts of the articulated body is modeled with
local information of displacements from the Markov network and the global information from
other neighboring parts. We explore the effect of certain model parameters (including the
number of parts tracked; number of Monte-Carlo cycles, etc.) on system accuracy and show that
ourvariational Monte Carlo approach achieves better efficiency and effectiveness compared to
other methods on a number of real-time video datasets containing single targets.
Detection of Dense, Overlapping, Geometric Objects gerogepatton
Using a unique data collection, we are able to study the detection of dense geometric objects in image data
where object density, clarity, and size vary. The data is a large set of black and white images of
scatterplots, taken from journals reporting thermophysical property data of metal systems, whose plot
points are represented primarily by circles, triangles, and squares. We built a highly accurate single class
U-Net convolutional neural network model to identify 97 % of image objects in a defined set of test images,
locating the centers of the objects to within a few pixels of the correct locations. We found an optimal way
in which to mark our training data masks to achieve this level of accuracy. The optimal markings for object
classification, however, required more information in the masks to identify particular types of geometries.
We show a range of different patterns used to mark the training data masks, and how they help or hurt our
dual goals of location and classification. Altering the annotations in the segmentation masks can increase
both the accuracy of object classification and localization on the plots, more than other factors such as
adding loss terms to the network calculations. However, localization of the plot points and classification of
the geometric objects require different optimal training data.
This document discusses hierarchical clustering methods, which arrange clusters in a nested tree structure. It describes bottom-up and top-down approaches for hierarchical clustering. Bottom-up starts with each object as a cluster and merges them into larger clusters, while top-down separates all objects into distinct clusters that are successively merged. Various distance measures for determining cluster similarity are presented, such as distance between centroids and Ward's method which minimizes variance.
The document discusses different methods for partitioning data into clusters. It describes hierarchical, density-based, grid-based, and model-based partitioning methods. It then explains the k-means and k-medoids partitioning algorithms in more detail, outlining the basic steps of assigning objects to clusters and updating centroids or medoids. Finally, it summarizes the Birch, ROCK, and CURE clustering algorithms.
This document proposes a dynamic clustering algorithm using fuzzy c-means clustering. It begins with an introduction to fuzzy c-means clustering and its limitations when the chosen number of clusters is incorrect. It then proposes a dynamic clustering algorithm that starts with a fixed number of clusters but can automatically increase the number of clusters during iterations based on the data, improving purity. The algorithm is described and examples are provided to illustrate its effectiveness at forming clear clusters after iterations and determining when clustering has terminated.
Types of clustering and different types of clustering algorithmsPrashanth Guntal
The document discusses different types of clustering algorithms:
1. Hard clustering assigns each data point to one cluster, while soft clustering allows points to belong to multiple clusters.
2. Hierarchical clustering builds clusters hierarchically in a top-down or bottom-up approach, while flat clustering does not have a hierarchy.
3. Model-based clustering models data using statistical distributions to find the best fitting model.
It then provides examples of specific clustering algorithms like K-Means, Fuzzy K-Means, Streaming K-Means, Spectral clustering, and Dirichlet clustering.
Clustering algorithms are a type of unsupervised learning that groups unlabeled data points together based on similarities. There are many different clustering methods that can handle numeric and/or symbolic data in either hierarchical or flat clustering structures. One simple and commonly used algorithm is k-means clustering, which assigns data points to k clusters based on minimizing distances between points and assigned cluster centers. K-means clustering has advantages of being simple and automatically assigning data points but has disadvantages such as needing to pre-specify the number of clusters and being sensitive to outliers.
1. The document presents a new approach for steganography detection using a combination of Fisher's linear discriminant function (FLD) and radial basis function neural network (RBF).
2. In the training phase, FLD is used to project high-dimensional image data onto a lower dimensional space, then an RBF network is trained to classify images as containing hidden data or not.
3. Experiments show the combined FLD-RBF method provides promising results for steganography detection compared to existing supervised methods, though extracting the hidden information remains challenging.
The main goal of cluster analysis is to classify elements into groupsbased on their similarity. Clustering has many applications such as astronomy, bioinformatics, bibliography, and pattern recognition. In this paper, a survey of clustering methods and techniques and identification of advantages and disadvantages of these methods are presented to give a solid background to choose the best method to extract strong association rules.
This document discusses different types of clustering techniques used in machine learning. It describes clustering as an unsupervised learning method that groups similar data points together. The main types covered are hard clustering, soft clustering, density-based clustering, hierarchical clustering, and partitioning-based clustering like k-means. K-means and hierarchical clustering are explained in more detail, including examples of how they work. Agglomerative and divisive hierarchical clustering are two approaches defined.
Hierarchical clustering is a method of cluster analysis that seeks to build a hierarchy of clusters. There are two types of hierarchical clustering methods: divisive, which starts with all observations in one cluster and splits recursively; and agglomerative, which starts with each observation in its own cluster and merges pairs of clusters as it moves up the hierarchy. Popular algorithms like BIRCH and CURE were introduced to improve upon hierarchical clustering methods by handling large datasets more efficiently and accounting for clusters with irregular shapes. However, hierarchical clustering still has weaknesses like inability to undo merges and poor scaling to large datasets.
IRJET- Finding Dominant Color in the Artistic Painting using Data Mining ...IRJET Journal
This document discusses finding the dominant color in an artistic painting using data mining techniques. It proposes using k-means clustering via the OpenCV library in Python to cluster pixels in the image by color and determine the dominant color cluster. The document provides background on k-means clustering and other clustering algorithms. It then describes applying a faster k-means algorithm to the image pixels to efficiently identify the dominant color in 2-3 times fewer iterations than standard k-means. The proposed system architecture involves preprocessing the image, extracting pixel vectors, clustering the pixels into color groups using fast k-means, and identifying the dominant color cluster.
Clustering Using Shared Reference Points Algorithm Based On a Sound Data ModelWaqas Tariq
A novel clustering algorithm CSHARP is presented for the purpose of finding clusters of arbitrary shapes and arbitrary densities in high dimensional feature spaces. It can be considered as a variation of the Shared Nearest Neighbor algorithm (SNN), in which each sample data point votes for the points in its k-nearest neighborhood. Sets of points sharing a common mutual nearest neighbor are considered as dense regions/ blocks. These blocks are the seeds from which clusters may grow up. Therefore, CSHARP is not a point-to-point clustering algorithm. Rather, it is a block-to-block clustering technique. Much of its advantages come from these facts: Noise points and outliers correspond to blocks of small sizes, and homogeneous blocks highly overlap. This technique is not prone to merge clusters of different densities or different homogeneity. The algorithm has been applied to a variety of low and high dimensional data sets with superior results over existing techniques such as DBScan, K-means, Chameleon, Mitosis and Spectral Clustering. The quality of its results as well as its time complexity, rank it at the front of these techniques.
This document discusses parallelizing image thinning algorithms through topological operators on shared memory parallel machines. It presents an approach that combines split-distribute-merge strategy with mixed data and thread parallelism. The methodology was tested on 2D grayscale images using a shared memory machine with 8 CPUs. The results showed a 6.2x speedup with efficient parallel implementation.
Big data Clustering Algorithms And StrategiesFarzad Nozarian
The document discusses various algorithms for big data clustering. It begins by covering preprocessing techniques such as data reduction. It then covers hierarchical, prototype-based, density-based, grid-based, and scalability clustering algorithms. Specific algorithms discussed include K-means, K-medoids, PAM, CLARA/CLARANS, DBSCAN, OPTICS, MR-DBSCAN, DBCURE, and hierarchical algorithms like PINK and l-SL. The document emphasizes techniques for scaling these algorithms to large datasets, including partitioning, sampling, approximation strategies, and MapReduce implementations.
A Density Control Based Adaptive Hexahedral Mesh Generation Algorithmijeei-iaes
This document summarizes an adaptive hexahedral mesh generation algorithm that uses density control. The algorithm involves 5 main steps: 1) Identifying the boundaries of the solid model, 2) Constructing refinement fields based on density metrics and generating an initial grid structure, 3) Generating a jagged core mesh by removing exterior elements, 4) Matching the core mesh surfaces to the solid model surfaces, 5) Improving mesh quality using optimization techniques. The algorithm aims to generate high quality hexahedral meshes with reasonably distributed density. It uses curvature and thickness criteria to refine the initial grid structure adaptively before generating the core mesh and performing surface matching and quality optimization.
Grid based method & model based clustering methodrajshreemuthiah
The document discusses several grid-based, density-based, and conceptual clustering algorithms. Grid-based approaches like STING and WAVECLUSTER cluster data by quantizing space into grids or cells. CLIQUE uses a grid-based approach to identify dense units of data. Conceptual clustering algorithms like COBWEB create hierarchical cluster trees to classify objects based on attribute probabilities.
This document proposes a model for applying predictive data mining and associative rule mining to spatio-temporal data that is highly variable. It represents the data using a "motley matrix" and "multi-version optional quad tree" data structures to efficiently handle the large and changing data. The model can be used to classify points based on how they change over time, and to mine associative rules from patterns in how points change spatially and temporally across instances.
Unsupervised Learning: Similarities and distance functions for IoT dataGiampaoloCasolla
(1) Researchers studied visitor behavior data from a museum in Italy collected using an IoT system to track visitor paths and time spent. The dataset includes visiting paths and time spent for 19,000 users.
(2) The researchers considered hierarchical clustering and k-medoids (PAM) algorithms to cluster the unlabeled data. They analyzed four string similarity functions and Euclidean distance to cluster the path and time features.
(3) The researchers compared the clustering methods using an F-measure heatmap to determine the most accurate approach for clustering the IoT behavior data.
Application of stochastic modelling in bioinformaticsSpyros Ktenas
This document discusses stochastic modeling and its applications in bioinformatics. It defines stochastic models and processes, and explains how they differ from deterministic models in accounting for uncertainty. Some examples of stochastic modeling approaches described include stochastic process algebra using tools like π-calculus and Petri nets, Markov models including Markov chains and hidden Markov models, and BioAmbients for modeling biological systems with mobile boundaries. The document argues that stochastic methods are better suited than deterministic ones for describing complex and dynamically evolving biological systems.
This document compares three image restoration techniques - Iterated Geometric Harmonics, Markov Random Fields, and Wavelet Decomposition - for removing noise from images. It describes each technique and the process used to test them. Noise was artificially added to images using different noise generation functions. Wavelet Decomposition and Markov Random Fields were then used to detect the noise locations. These noise locations were then used to create versions of the noisy images suitable for reconstruction via Iterated Geometric Harmonics. The reconstructed images were then compared to the original to evaluate the performance of each technique.
VARIATIONAL MONTE-CARLO APPROACH FOR ARTICULATED OBJECT TRACKINGcscpconf
In this paper, we describe a novel variational Monte Carlo approach for modeling and tracking body parts of articulated objects. An articulated object (human target) is represented as a
dynamic Markov network of the different constituent parts. The proposed approach combines local information of individual body parts and other spatial constraints influenced by
neighboring parts. The movement of the relative parts of the articulated body is modeled with local information of displacements from the Markov network and the global information from other neighboring parts. We explore the effect of certain model parameters (including the number of parts tracked; number of Monte-Carlo cycles, etc.) on system accuracy and show that ourvariational Monte Carlo approach achieves better efficiency and effectiveness compared to
other methods on a number of real-time video datasets containing single targets
VARIATIONAL MONTE-CARLO APPROACH FOR ARTICULATED OBJECT TRACKINGcsandit
In this paper, we describe a novel variational Monte Carlo approach for modeling and tracking
body parts of articulated objects. An articulated object (human target) is represented as a
dynamic Markov network of the different constituent parts. The proposed approach combines
local information of individual body parts and other spatial constraints influenced by
neighboring parts. The movement of the relative parts of the articulated body is modeled with
local information of displacements from the Markov network and the global information from
other neighboring parts. We explore the effect of certain model parameters (including the
number of parts tracked; number of Monte-Carlo cycles, etc.) on system accuracy and show that
ourvariational Monte Carlo approach achieves better efficiency and effectiveness compared to
other methods on a number of real-time video datasets containing single targets.
Detection of Dense, Overlapping, Geometric Objects gerogepatton
Using a unique data collection, we are able to study the detection of dense geometric objects in image data
where object density, clarity, and size vary. The data is a large set of black and white images of
scatterplots, taken from journals reporting thermophysical property data of metal systems, whose plot
points are represented primarily by circles, triangles, and squares. We built a highly accurate single class
U-Net convolutional neural network model to identify 97 % of image objects in a defined set of test images,
locating the centers of the objects to within a few pixels of the correct locations. We found an optimal way
in which to mark our training data masks to achieve this level of accuracy. The optimal markings for object
classification, however, required more information in the masks to identify particular types of geometries.
We show a range of different patterns used to mark the training data masks, and how they help or hurt our
dual goals of location and classification. Altering the annotations in the segmentation masks can increase
both the accuracy of object classification and localization on the plots, more than other factors such as
adding loss terms to the network calculations. However, localization of the plot points and classification of
the geometric objects require different optimal training data.
DETECTION OF DENSE, OVERLAPPING, GEOMETRIC OBJECTSgerogepatton
Using a unique data collection, we are able to study the detection of dense geometric objects in image data where object density, clarity, and size vary. The data is a large set of black and white images of scatterplots, taken from journals reporting thermophysical property data of metal systems, whose plot points are represented primarily by circles, triangles, and squares. We built a highly accurate single class U-Net convolutional neural network model to identify 97 % of image objects in a defined set of test images, locating the centers of the objects to within a few pixels of the correct locations. We found an optimal way in which to mark our training data masks to achieve this level of accuracy. The optimal markings for object classification, however, required more information in the masks to identify particular types of geometries. We show a range of different patterns used to mark the training data masks, and how they help or hurt our dual goals of location and classification. Altering the annotations in the segmentation masks can increase both the accuracy of object classification and localization on the plots, more than other factors such as adding loss terms to the network calculations. However, localization of the plot points and classification of the geometric objects require different optimal training data
DETECTION OF DENSE, OVERLAPPING, GEOMETRIC OBJECTSijaia
Using a unique data collection, we are able to study the detection of dense geometric objects in image data where object density, clarity, and size vary. The data is a large set of black and white images of scatterplots, taken from journals reporting thermophysical property data of metal systems, whose plot points are represented primarily by circles, triangles, and squares. We built a highly accurate single class U-Net convolutional neural network model to identify 97 % of image objects in a defined set of test images, locating the centers of the objects to within a few pixels of the correct locations. We found an optimal way in which to mark our training data masks to achieve this level of accuracy. The optimal markings for object classification, however, required more information in the masks to identify particular types of geometries. We show a range of different patterns used to mark the training data masks, and how they help or hurt our dual goals of location and classification. Altering the annotations in the segmentation masks can increase both the accuracy of object classification and localization on the plots, more than other factors such as
adding loss terms to the network calculations. However, localization of the plot points and classification of the geometric objects require different optimal training data.
M ESH S IMPLIFICATION V IA A V OLUME C OST M EASUREijcga
We develop a polygonal mesh simplification algorithm based on a novel analysis of the mesh
geometry.
Particularly, we propose first a characterization of vertices as hyperbolic or non
-
hyperbolic depend
-
ing
upon their discrete local geometry. Subsequently, the simplification process computes a volume cost for
each non
-
hyperbolic vertex, in anal
-
ogy with spherical volume, to capture the loss of fidelity if that vertex
is decimated. Vertices of least volume cost are then successively deleted and the resulting holes re
-
triangulated using a method based on a novel heuristic. Preliminary experiments i
ndicate a performance
comparable to that of the best known mesh simplification algorithms
Enhancing the Design pattern Framework of Robots Object Selection Mechanism -...INFOGAIN PUBLICATION
This document summarizes a research paper about developing a computer program that can take a 2D photograph as input, analyze it to determine the objects and their 3D structure, and output a 3D representation that can be viewed from any angle. The program makes assumptions about the objects, such as they are constructed from transformations of known 3D models and are supported by other visible objects or a ground plane. It develops processes for 2D to 3D construction and 3D to 2D display that can handle most arrangements of objects with planar surfaces.
Object tracking is one of the most important problems in modern visual systems and researches are
continuing their studies in this field. A suitable tracking method should not only be able to recognize and
track the related object in continuous frames, but should also provide a reliable and efficient reaction
against the phenomena disturbing tracking process including performance efficiency in real-time
applications. In this article, an effective mesh-based method is introduced as a suitable tracking method in
continuous frames. Also, its preference and limitation is discussed.
This document presents an adaptive mesh method for object tracking in video frames. The method uses an adaptive mesh structure instead of a uniform mesh, where nodes are selected adaptively between frames based on object movement. This provides more robustness to minor or major occlusions. The method estimates background to be covered and uncovered background regions, applies polygon approximation to model borders, and estimates optical flow for node movement. It was shown to effectively handle challenges in tracking like occlusions while maintaining real-time performance. Some limitations are its complexity and inability to guarantee occlusion of all inter-nodal regions.
Three-dimensional viewing involves considering the spatial position from which an object can be viewed, projecting 3D descriptions of objects onto a 2D viewing surface, and enclosing visible space within clipping boundaries. The viewing pipeline involves a series of transformations that convert 3D coordinates to 2D device coordinates for display. Parallel and perspective projections are two basic projection methods that transform 3D positions to 2D viewing coordinates in different ways.
This document discusses fractal image compression using fractal functions. It introduces fractal geometry and fractal image compression. Fractal image compression works by finding self-similar patterns within an image and encoding them using fractal codes. The document proposes using a class of continuous fractal functions that depend on a finite set of parameters to build a mathematical model for fractal image encoding and decoding. This model represents numbers using a finite alphabet system and stochastic matrices, allowing images to be encoded and reconstructed from the fractal codes.
A Connectionist Approach To The Quadratic Assignment ProblemSheila Sinclair
This document describes two connectionist models for solving the quadratic assignment problem (QAP). Model 1 is based on a Boltzmann machine, which uses simulated annealing to escape from local optima. Model 1 had inefficiencies, so the authors developed Model 2, which uses a different connectionist architecture. Computational results show Model 2 performs better than Model 1 on QAP instances of dimension up to 90.
Insect inspired hexapod robot for terrain navigationeSAT Journals
Abstract The aim of this paper is to build a sixlegged walking robot that is capable of basicmobility tasks such as walking forward, backward, rotating in place and raising orlowering the body height. The legs will be of a modular design and will have threedegrees of freedom each. This robot will serve as a platform onto which additionalsensory components could be added, or which could be programmed to performincreasingly complex motions. This report discusses the components that make up ourfinal design.In this paper we have selected ahexapod robot; we are focusing &developingmainly on efficient navigation method indifferent terrain using opposite gait of locomotion, which will make it faster and at sametime energy efficient to navigate and negotiate difficult terrain.This paper discuss the Features, development, and implementation of the Hexapod robot Index Terms:Biologically inspired, Gait Generation,Legged hexapod, Navigation.
This document presents a method for recognizing and reconstructing transparent objects like glass for augmented reality applications. It uses a learning approach to classify image patches and group transparent regions across multiple images. A probabilistic formulation then aggregates spatially consistent glass regions to build a 3D reconstruction. This allows virtual objects to interact realistically with the reconstructed transparent objects. The method requires only a conventional RGB camera and no specialized sensors or lighting.
The Extraction of Spatial Features from remotely sensed data and the use of this information as input into further decision making systems such as geographical information systems (GIS) has received considerable attention over the few decades. The successful use of GIS as a decision support tool can only be achieved, if it becomes possible to attach a quality label to the output of each spatial analysis operation. Thus the accuracy of Spatial Feature Extraction gained more attention as geographic features can hardly formulated in a certain pattern due to intra-class variation and inter-class similarity. Besides these Spatial Feature Extraction further include positional uncertainty, attribute uncertainty, topological uncertainty, inaccuracy, imprecision/inexactitude, inconsistency, incompleteness, repetition, vagueness, noisy, omittance, misinterpretation, misclassification, abnormalities and knowledge uncertainty. To control and reduce uncertainty in an acceptable degree, a Probabilistic shape model is described for Extracting Spatial Features from multi-spectral image. The advantages of this, as opposed to the conventional approaches, are greater accuracy and efficiency, and the results are in a more desirable form for most purposes.
The International Journal of Engineering & Science is aimed at providing a platform for researchers, engineers, scientists, or educators to publish their original research results, to exchange new ideas, to disseminate information in innovative designs, engineering experiences and technological skills. It is also the Journal's objective to promote engineering and technology education. All papers submitted to the Journal will be blind peer-reviewed. Only original articles will be published.
This document discusses various topics in computer vision including affinity measures for image segmentation, normalized cuts, human stereopsis, epipolar geometry, and trinocular stereo. It also discusses tracking applications such as motion capture, recognition from motion, surveillance, and targeting. Vehicle tracking is discussed in detail for applications in predicting traffic flow using video from fixed cameras to initiate tracks automatically by constructing regions of interest that span each lane.
A NOVEL APPROACH TO SMOOTHING ON 3D STRUCTURED ADAPTIVE MESH OF THE KINECT-BA...csandit
3-dimensional object modelling of real world objects in steady state by means of multiple point
cloud (pcl) depth scans taken by using sensing camera and application of smoothing algorithm
are suggested in this study. Polygon structure, which is constituted by coordinates of point
cloud (x,y,z) corresponding to the position of 3D model in space and obtained by nodal points
and connection of these points by means of triangulation, is utilized for the demonstration of 3D
models. Gaussian smoothing and developed methods are applied to the mesh consisting of
merge of these polygons, and a new mesh simplification and augmentation algorithm are
suggested for the over the 3D modelling. Mesh consisting of merge of polygons can be
demonstrated in a more packed, smooth and fluent way. In this study is shown that applied the
triangulation and smoothing method for 3D modelling, perform to a fast and robust mesh
structures compared to existing methods therewithal no remeshing is necessary for refinement
and reduction.
Since the skeleton represents the topology structure of the query sketch and 2D views of 3D model, this paper proposes a novel sketch-based 3D model retrieval algorithm which utilizes skeleton characteristics as the features to describe the object shape. Firstly, we propose advanced skeleton strength map (ASSM) algorithm to create the skeleton which computes the skeleton strength map by isotropic diffusion on the gradient vector field, selects critical points from the skeleton strength map and connects them by Kruskal's algorithm. Then, we propose histogram feature comparison algorithm which adopts the radii of the disks at skeleton points and the lengths of skeleton branches to extract the histogram feature, and compare the similarity between two skeletons using the histogram feature matrix of skeleton endpoints. Experiment results demonstrate that our approach which combines these two algorithms significantly outperforms several leading sketch-based retrieval approaches.
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology.
2. ~. S I G G R A P H '86
The algorithm first subdivides all polygons in each of the
objects so that no two polygons intersect. Two non-coplanar
polygons intersect if a vertex of one lies in the interior of a face or
edge of the other, or if an edge of one crosses an edge or face of the
other. Polygons that share a vertex or an edge, or that are
coplanar, do not intersect. The logic for not intersecting coplanar
polygons is described in the last paragraph of section 4.
Once the polygons of both objects have been subdivided, the
polygons of each object are classified with respect to the surface of
the other object. A polygon in one object may lie inside, outside,
or on the boundary of the other object. Vertex adjacency informa-
tion is used here so that the same ¢lassifieatlon can be assigned to
polygons that are adjacent and do not cross the surface of the
other object. This avoids comparing all polygons in one object
with all polygons in the other object. The boundary of the combi-
nation of the objects will be a subset of all the polygons in both
objects. Each polygon's classification is determined by casting a ray
from the polygon through the other object and testing the intersec-
tion point and surface normal of the nearest intersecting polygon in
the other object. The algorithm uses the classification of each
polygon to retain or delete it according to the set operation being
performed.
As the algorithm proceeds it modifies the objects until,
finally, the set of all polygons in both modified objects forms the
resulting object.
3. Object Data Structure
While these CSG routines are flexible enough to operate on
many different types of objects, the objects must satisfy certain
restrictions. Because we are performing operations on the boun-
daries of volumes, each object must be constructed of polygons that
form the topological boundary of the closure of an open set of finite
extent in R3 [REQ80]. More simply, an object must be the surface
of a volume and must not have dangling faces or edges. This res-
triction enables us to efficiently distinguish the interior of the
object from the exterior. Planes and other surfaces that do not
enclose a volume are not valid objects, but can often be modified to
bound some volume. Figure 3.1 shows examples of two valid and
two invalid objects.
Each polygon in an object must satisfy five restrictions. (1) It
must be planar and convex. (2) No three vertices in the polygon
may be collinear. (3) It may not contain the same vertex twice.
(4) The vertices must be ordered clockwise when viewed from out-
side the object, so that cross-products using the directed edges of
the polygon may be used to determine the interior of the object.
(5) No polygon may intersect any other polygon in the object. A
simple verification program can check that the order of the vertices
in each polygon agrees with the direction of the normal, and verify
that all polygons are convex and planar. Combining two valid
objects always produces a new valid object which therefore does
not need to be verified.
The vertex data structure contains the spatial location of the
vertex as well as a list of pointers to adjacent vertices and a
"status" field. Initially, the status field is set to UNKNOWN, but
as the algorithm proceeds, this field changes to indicate whether
the vertex is INSIDE, OUTSIDE, or on the BOUNDARY of the
other object. The list of adjacencies is used for traversing the edges
of the object to find connected regions of vertices with identical
status. This adjacency informations calculated after the objects
have been intersected with each other.
The polygon structure includes a list of pointers to the ver-
tices of the polygon, the plane equation, and the extent of the
polygon. The plane equation is used as the polygon normal, and is
also used when intersecting polygons. The extent is used to
determine quickly if two polygons do not intersect.
The object structure consists of the extent of the object, an
array of vertices, and an array of polygons. Again, the extent is
used to determine quickly when a polygon does not intersect the
object. The data structures for objects, vertices, and polygons are
shown in Figure 3.2.
(bl(a)
(c) (d)
Fig. 3.1: Objects (a) and (b) are valid;
objects (c) and (d) are not
Object Structure
array of vertices
array of polygons
object extent (minimum andmaximumx,y,z)
Vertex Structure
spatial location (x, y, z)
array of pointers to adjacent vertices
status (inside, outside, boundary, or unknown)
Polygon Structure
array of pointers to vertices
polygon extent (minimum and maximum x,y,z)
polygon plane equation (x,y,z,d)
Fig 3.2: Data structures
4. Intersecting the Objects
The first step in the algorithm is splitting both objects so
that the polygons in each do not intersect.. In this discussion, we
will refer to the object which is to be split as objectA and to a
polygon in that object as polygonA. Similarly, polygonB is a
polygon in objectB, the other object.
The first part of Figure 4.1 explains how pairs of objects are
subdivided. When polygonA is split, new edges will be introduced
into objectA, and a face that is split will become two or more new
faces. The new edges in objectA may intersect the interiors of
faces of objectB, possibly requiring further subdivision of polygons
in objectB.
When the splitting routine is initially called, the first object is
objectA and the second is objectB. After this initial splitting, no
face of the second object intersects the interior of any face of the
first object. So on the second pass, the new faces that are gen-
erated by splitting faces of the second object create no further
intersections with interiors of faces in the first object; only new
edge intersections are created.
Consequently on the third pass (the first object is once again
objectA), polygons in objectA will only be changed by splitting
edges at points where these edges intersect new edges of the second
object. This will, as before, introduce no new edges that intersect
faces in objectB. It also will not introduce any new edge-edge inter-
sections, since the only new edges that are added come in the inte-
riors of polygon.As, and these never intersect the faces or edges of
polygonBs. Thus there is no need to make a fourth pass; the algo-
rithm is finished.
162
3. Dallas, August 18-22 Volume 20, Number 4, 1986
Subdividing Objects
split the first object so that it doesn't intersect the second object
split the second object so that it doesn't intersect the first object
split the first object again, resolving newly introduced intersections
Splitting ObjectA by ObjectB
if extent of objectA overlaps extent of objeetB
for each polygovtA in ob~eetA
if the extent of polygonAL overlaps the extent of objectB
for each polygonB in objectB
if the extents of polygonA_ and polygonB overlap
analyze them as in "5. Do Two Polygons Intersect?"
if they are not COPLANAR and do INTERSECT
subdivide polygonA as in
"6. Subdividing Non-Coplanar Polygons"
else if they do NOT-INTERSECT
or if they are COPLA.NAR
(do nothing)
Fig. 4.1: Splitting objects
The second part of Figure 4.1 explains how all the polygons
in one object are split so that they do not intersect a second
object. For each pair of polygons with overlapping extents, the
routine described in the section "Do Two Polygons Intersect?"
determines whether the polygons are COPLANAR, INTERSECT in
a line (or possibly a point), or do NOT_INTERSECT. Pairs of
polygons that INTERSECT are subdivided as described in the sec-
tion "Subdividing Polygons." New polygons are added to the end of
the the list of polygons in objectA, and are checked against
objectB after all original polygons in objectA have been checked.
Those that are COPLANAR or do NOT-INTERSECT are not sub-
divided.
Although COPLANAR pairs of polygons are not subdivided,
after the first two subdivisions all groups of adjacent coplanar
polygons in one object will have corresponding groups of eoplanar
polygons in the other object. While the polygons in these groups
may not be identical, the regions they cover will be the same.
Each edge of a polygon is shared by at least one other polygon. If
an edge of polygonB crosses polygonA, then there must be another
polygonB which also has that edge. If this polygonB is not
coplanar with polygonA, then polygoaA will be subdivided when
compared to this second polygonB. If the adjacent polygonB is
coplanar with polygonA, it either extends beyond polygonA (and
will eventually be subdivided by some polygonA), or is contained
within polygonA and, again, will not be used to subdivide
polygorLA.
5. Do Two Polygons Intersect?
This section describes how to determine whether two polygons
are coplanar, intersect in a line (or possibly a point), or do not
intersect. The first step in determining whether the two polygons
intersect is finding the signed distance from each of the vertices in
polygonh to the plane of polygonB. The distance is positive if the
normal vector points from the plane of the polygon towards the
point. If these distances are all zero, then the polygons are
coplanar. If they are all positive or all negative, then polygonA
lies entirely to one side of the plane of polygonB, and thus the two
polygons do not intersect; otherwise they may intersect, and the
signed distance from each vertex in polygonB to the plane of
polygoltA is computed. Again, if the distances are all positive or
all negative, then polygonB lies entirely to one side of polygonAj
and the two polygons do not intersect. Coplanar polygons would
have been discovered by the first test, so the distances cannot, all
be 2ero.
If the preceding tests are inconclusive~ then we calculate the
llne off it~terseetion of the two planes. The line of intersection L is
determined by a point P and a direction D. Some segment of this
line is interior to or on the perimeter of polygonA, and some seg-
ment is interior to or on the perimeter of polygonB. If these two
segments overlap, then the polygons intersect. If the segments do
not overlap, then the polygons do not intersect.
Data structures for each of the two segments store informa-
tion that is used to subdivide polygonA and polygonB, if they inter-
sect. This information includes the distance from P to the starting
and ending points of the segment, as well as descriptors that record
whether each point of the segment corresponds to a vertex of the
polygon it spans, a point on its edge, or a point on its face.
Because all polygons are convex and contain no collinear vertices,
it follows that the intersection is a single line segment and that
three descriptors are sufficient to describe the entire segment: one
for the starting point, a second for the interior of the segment, and
a third for the ending point. A segment that starts at a vertex,
crosses a face, and ends at an edge can be represented by the
mnemonic vertex-face-edge. Similarly, any type of segment can be
represented by a three-word mnemonic.
Only the distances from P to the start and end of the seg-
ment are necessary to determine if the polygons intersect. If the
segments overlap, then the additional information is used later to
subdivide the polygons.
The intersection of L with either polygon must both start
and end at a vertex or an edge. In addition to the beginning and
ending points on L and the three type descriptors for the segment,
the segment structure stores the indices of the vertices preceding
the endpoints of the segment (for example, B and E in Figure
6.3a-q). The segment data structure is shown in Figure 5.1.
distance of start of segment from $P$
distance of end of segment from $P$
descriptors for starting, middle, and ending points
index of polygon vertex near start point
index of polygon vertex near end point
Fig. ~.1: Segment data structure
The remainder of this section and the following sections dis-
cuss operations on polygonA; these same operations are also per-
formed on polygonB.
The segment structure is filled in as follows, There are six
different ways in which L can iutersect polygonA. They are
characterized by the types of the starting, middle, and ending
points of the intersection segment. Because the polygons are con-
vex, the segment starts at a vertex or edge, continues through a
vertex, an edge, or the face, and ends at a vertex or edge. Of the
twelve combinations, six are not possible. Vertex-edge-edge, edge-
edge-vertex, and edge-edge-edge are impossible because any seg-
ment that contains edge points in the middle must begin and end
at a vertex; if a segment contains some points on an edge, it must
contain all points on the edge, including both endpoints. Similarly,
edge-vertex-edge, vertex-vertex-edge and edge-vertex-vertex are
impossible. Figure 5.2 gives examples of the six possibilities.
vertex vertex vertex vertex edge edge
vertex edge face face face face
vertex vertex vertex edge vertex edge
Fig. 5.2: Intersection possibilities of
a polygon and a llne in a plane
163
4. ~. S I G G R A P H '86
The distances of all the vertices of polygonA from the plane
of polygon]3 were calculated for an earlier test; they are now used
to find where L crosses polygonA, since the distance from each ver-
tex to the plane of polygonB is proportional to the distance from
the vertex to L. Vertices with distance zero lie on L, while adja-
cent vertices with distances that differ in sign lie on opposite sides
of L and thus arc endpoints of an edge that crosses L. For a ver-
tex intersection the index of the vertex is saved in the segment
structure and the endpoint type is set to VERTEX (B and E in
Figure 6.3b). For an edge intersection, the ratio of the calculated
vertex distances is used to find the intersection point, and the
intersection point is used to find the distance between the intersec-
tion point and P along L. The index of the first vertex of the edge
is saved and the endpoint type is set to EDGE (B and E in Figure
6.3k).
The midpoint descriptor is determined from the endpoints of
the segment. It is set to EDGE if the endpoints of the segment are
adjacent vertices in polygon.A, and to VERTEX if the endpoints
are the same vertex. Otherwise, the middle points must lie in the
FACE of the polygon.
6. Subdividing Non-coplanar Polygons
Given two polygons, polygoni and polygonB, that intersect
and are not coplanar, we must subdivide them so that, the resulting
smaller polygons do not intersect and are still legal polygons. We
are also given t~vo segment structures, one representing the inter-
section of polygonA with L, the other representing the intersection
of polygonB with L.
To split polygonh so that none of the resulting smaller
polygons intersect polygonB, we need to find the intersection of seg-
mentA and segmentB and determine the type of that intersection
segment with respect to polygonA. If either end of segmentA is
changed, then the type of that end becomes the same type "as the
middle points (Figure 8.1).
F E
V E
F F E
E E
i
E
SegraentA
SegmentB
SegmentA in SegmentB
SegmentB in SegmentA
Fig. 8.1: Intersecting two segments
To subdivide polygonA so that the new polygons do not inter-
sect polygonB, the intersection segment must become an edge in
the decomposition. The splitting of polygonA is dependent on how
the intersection segment cuts across it. Since the starting point
can be a vertex~ an edge, or a face, as can the midpoints and the
endpoint, there are at most 3X3×3 = 27 different kinds of intersec-
tion segments. Thirteen of these segment types are impossible,
because they have middle point types that are of lower dimension
than one of the end types, and in convex polygons that is not possi-
ble. Of the remaining fourteen types, four are symmetric to other
types with their endpoints swapped. We then need discuss only ten.
In the list of 27 segment types in Figure 8.2, the thirteen
impossible types are marked with an "X," and the four symmetric
cases are marked with an "S." The remaining ten are numbered to
correspond with the discussion that follows. A description of the
geometry of the intersection for each of these ten types t'ollows, as
does a discussion of the method of splitting polygonA into smaller
polygons for each type.
1) vertex-vertex-vertex
(X) vertex-vertex-edge
(X) vertex-vertex-face
(2) vertex-edge-vertex
(3) vertex-edge-edge
(X) vertex-edge-face
(4) vertex-face-vertex
(5) vertex-face-edge
(6) vertex-face-face
(X) edge-vertex-vertex
(X) edge-vertex-edge
(X) edge-vertex-face
(S) edge-edge-vertex
(7) edge-edge-edge
Fig. 8.2: Identification
(X) edge-edge-face
(S) edge-face-vertex
(8) edge-face-edge
(9) edge-face-face
(X) face-vertex-vertex
(5~) face-vertex-edge
(X) face-vertex-face
(X) face-edge-vertex
(X) face-edge-edge
(X) face-edge-face
(S) face-face-vertex
(S) face-face-edge
(10) face-face-face
of valid segment types
The diagrams for each type of segment (Figure 8.3) illustrate
the intersection segment and how a polygon with that type of
intersection is subdivided. The vertex in the segment structure
associated with the beginning of the intersection segment is marked
with a "B" and the vertex of the end is marked with an "E." Ver-
tices that are added so that the polygon can be split are marked
"M" and "N." The vertices are ordered clockwise in the diagrams.
Note that all subdivisions produce only legal new polygons;
no collinear vertices or non-convex polygons are introduced. All
vertices that are added must lle on the boundary of objectB, and
are thus marked as boundary vertices. These boundary vertices
play an important role in selecting polygons for the resultant
object (section 8).
(1) Vertex-vertex-vertex - The polygon is intersected at a
single vertex and does not need to be subdivided. The vertex is
marked as a boundary vertex (Figure 6.3a).
(2) Vertex-edge-vertex - The polygon is intersected along an
entire edge and does not need to be subdivided. Both vertices are
marked as boundary vertices (Figure 6.3b).
(3) Vertex-edge-edge - The segment intersects the polygon
along part of an edge, starting at a vertex and ending in the inte-
rior of the edge. The vertex is marked as a boundary vertex. A
new vertex is added in the interior of the edge and the polygon is
subdivided so that it forms two new polygons (Figures 6.3c and
6.3d).
(4) Vertex-face-vertex -- The segment cuts across the polygon
starting at a vertex and ending at a vertex. The polygon is eut
into two polygons along the line between the two vertices and both
vertices are marked as boundary vertices (Figure 6.3e).
(5) Vertex-face-edge - The segment cuts the polygon starting
at a vertex, crossing a face, and ending at an edge. The vertex is
marked as a boundary vertex. A new vertex is added along the
edge and the polygon is divided into two polygons (Figure 6.3f).
(6) Vertex-face-face - The segment crosses part of the
polygon, starting at a vertex and ending in the interior of the face.
The vertex is marked as a boundary vertex. A new vertex is added
in the face. If the segment continued, it would either pass through
one of the vertices on the other side of the polygon or miss all of
them. If the extended segment passes through a vertex, the
polygon is divided into four new polygons to avoid introducing col-
linear edges or non-convex polygons in the decomposition (Figure
6.3g). If the segment misses the vertiees, then the polygon is
divided into three new polygons (Figure 6.3h).
(7) Edge-edge-edge - The intersection starts at a point in the
interior of an edge and ends at a point in the interior of the same
edge, possibly the same point. If the points are not the same, then
two new vertices are added along the edge and the polygon is
divided into three new polygons (Figure 6.3i). Otherwise, if the
intersection is a single point on the edge, then a single new vertex
is added along the edge and the polygon is divided into two
polygons (Figure 6.3j).
164
5. Dallas, August 18-22 Volume 20, Number 4, 1986
(a) vvv (b) vev (c) vee (d) vee
B,E B E B N E
(e) vfv (0 vfe
(ii-
(i) eee (j) eee
(g)Nvff 1~ ~ ( h )vff (._~ (k) efe
- B k........~l .... B,E
(1)eft (m) eff (n) fff (o) fff (p) fff
-
Fig. 6.3: Polygon subdivisions for different segment types
(q) fff
(8) Edge-face-edge -- The polygon is cut across its face start-
ing and ending at two different edges. Two new vertices are added
along the edges and the polygon is divided into two polygons along
the intersection line (Figure 6.3k).
(9) Edge-face-face -- The segment cuts across part of the
polygon starting at an edge and ending in the interior of the face.
Two new vertices are added, one in the face and one along the
edge. If the extension of the intersection segment would pass
through a vertex, then the polygon is divided into four new
polygons, just as with (6) vertex-face-face (Figure 6.31). Otherwise,
the polygon becomes three new polygons (Figure 6.3m).
(10) Face-face-face - In this final case the intersection seg-
ment both starts and ends in the interior of the polygon, possibly
at the same point. If the intersection is a single point, then one
new vertex is added, otherwise two new vertices are added. As
with (9) edge-face-face and (6) vertex-face-face, the continuation of
the segment will hit either a vertex or an edge of the polygon, this
time in both directions. Figures 6.3n-q illustrate how the polygon
is divided into four, five, or six new polygons depending on where
the segment crosses the perimeter of the polygon.
These descriptions mention several operations that have not
yet been explained. Some add a vertex in the interior of an edge,
some add a vertex in the interior of a face, and most replace a
polygon with several new polygons.
When a vertex must be added in the interior of an edge, the
intersection segment structure contains the distance of the new
vertex from P on L. By using that distance and the equation for
the line of intersection, we can find the coordinates of the point.
The intersection segment structure also contains the index of the
first vertex of the edge that is intersected. The calculated point,
which may have suffered from some floating-point error, is pro-
jected onto this edge. If the vertex has coordinates different from
all existing vertices, then a new vertex is added to the object; oth-
erwise, nothing is added.
Adding a vertex that lies in the interior of a face is more
complicated. Again, the approximate coordinates are found by
substituting the distance of the new point along L into the equa-
tion of L. The new point is then projected onto the plane of the
polygon and the vertex is added just as a new vertex along an edge
is added.
In addition to updating edges and adding new vertices,
polygons must be replaced with smaller polygons. Figure 6.3 shows
how a polygon is subdivided in each case, but if the original
polygon has few vertices, the decomposition may produce degen-
erate polygons containing only two vertices. These polygons should
not be added to the object, and are ignored. Figure 6.4 (after sec-
tion 10) shows wireframe renderings of a pair of overlapping cubes
and their state after having been intersected with each other.
7. Classifying Polygons
A routine that determines the position of polygonA relative
to objectB is used several times by the algorithm. It is given
objectB and a polygonA and returns the position of polygonA with
respect to objectB: INSIDE, OUTSIDE, on the boundary of objectB
with the normal vector facing in the SAME direction as the normal
vector to objectB at that point, or on the boundary of objectB
with the normal vector facing in the OPPOSITE direction.
The average of the vertices of a polygon is called the
barycenter. A ray is cast from the barycenter of polygonA in the
direction of the normal vector to polygortA, and is intersected with
every polygonB in objectB. The polygonB th~.t intersects the ray
closest to the barycenter is found. If the barycenter does not lie in
the plane of the nearest polygonB, then the direction of the normal
vector to polygonB determines whether polygonA is inside or out-
side objeetB. If the normal to polygonB points toward polygonA,
then polygonA is OUTSIDE objectB; otherwise, polygortA is
iNSIDE objectB. If no polygons were intersected, then polygonA is
OUTSIDE objeetB. If the origin of the ray lies in the plane of the
nearest polygonB, then polygortA lies in the boundary of objectl3.
In this case, if the norfnal vectors of polygonA and polygonB point
in the same direction polygonA is classified as SAME; otherwise, it
is classified as OPPOSITE. These two classifications are used in
the next section.
The ray can intersect each polygonB iu objeetB in several
different ways. To determine an intersection type, we need to
know the dot product of the ray being cast with the normal vector
of the polygonB being checked, and the signed distance from the
barycenter to the plane of polygonB in the direction of the normal
vector. Figure 7.1 shows the five possible intersection types.
First, if the signed distance is negative, then polygonB is
bekind the barycenter and can be ignored.
165
6. S I G G R A P H '86
I
Dot Product:
Distance:
/ /
= 0 = 0 <> 0
< 0 = 0 > 0 = 0
ray misses ray lies in ray parallel ray starts
plane plane to plane in plane
Fig. 7.1: Intersections of a ray and polygonB
<> 0
> 0
ray intersects
plane
Second, if the dot product and the distance are both zero,
then the ray lies ia the plane of polygonB. Without complicated
analysis of all the polygons that the ray intersects, it is impossible
to determine the status of polygortA in this case, so the direction of
the ray must be perturbed by some small random value and the
classification retried for the new direction. Although it is theoreti-
cally possible that an infinite number of random perturbations will
all lead to invalid directions, in our implementation we have never
needed to perturb the direction more than once to find a valid
direction.
Third, if the dot product is zero and the distance is positive,
the ray is parallel to the plane but never intersects it and therefore
does not intersect polygonB.
Fourth, when the dot product is non-zero and the distance is
zero, the barycenter lies in the plane of polygol~B. If the
barycenter lies outside polygonB in that plane, then the ray does
not intersect polygonB; otherwise, polygonA lies on the boundary of
objectB and this must be the closest intersection.
The fifth ease occurs when the dot product is non-zero and
the distance is positive. The point of intersection of the ray and
the plane of polygonB must be inside polygoaB, outside polygonB,
or on an edge of polygonB. If an edge is hit, the ray must be per-
turbed and recast for all polygonB8 in objectB. If the ray misses
the interior of polygonB, then there is no intersection. Otherwise,
the ray intersects polygonB, and this intersection is saved if it is
closer than any intersection yet found. Figure 7.2 shows pseu-
decode for the polygon classification routine.
8. Marking Vertices
Once each object has been split so that none of the polygons
in either object intersects any of the polygons in the other object,
all the vertices in each object that lie on the boundary of the other
object will have been marked as BOUNDARY vertices by the rou-
tines that subdivided each polygon. This section describes how the
remaining vertices, still marked as UNKNOWN, arc classified as
lying INSIDE or OUTSIDE the other object so that the set of
polygons that make up the resulting object may be found. This
resulting set of polygons is a subset of all the polygons in both of
the objects. Whether or not each polygon is in this subset depends
on whether it lies INSIDE, OUTSIDE, or on the BOUNDARY of
the other object. The polygon classification routine could be called
to classify each polygon in both objects, but this would be time-
consuming. Instead, all the vertices of the object are classified by
classifying just a few of the polygons. Once all the vertices have
been classified, all of the polygons that have at least one vertex not
in the boundary of the other object can be classified, and only the
polygons that have exclusively boundary vertices need to make
extensive use of the ray-casting routine. This procedure must be
executed for both objects.
create a RAY starting at the barycenter of polygonA
in the direction of the normal of polygonA
while no successful cast has been made
for each polygonB in objectB
find the DOT PRODUCT of RAY direction
with the normal of polygonB
find the DISTANCE from barycenter to the plane of polygonB
if (DOT PRODUCT = 0) and (DISTANCE = 0)
cast is unsuccessful -- leave loop and perturb
else if (DOT PRODUCT = 0) and (DISTANCE > 0)
no intersection
else if (DOT PRODUCT <> 0) and (DISTANCE = 0)
if RAY passes through interior or edge of polygonB
save polygonB -- this is closest possible intersection
else
no intersection
else if (DOT PRODUCT <> 0) and (DISTANCE > 0)
find intersection point of ray with plane of polygonB
if intersection is closest yet
if RAY passes through interior of polygonB
(first check if point is within extent of polygonB)
save polygonB
else if RAY hits an edge of polygonB
cast is unsuccessful - leave loop and perturb
else
no intersection
if cast is unsuccessful
perturb RAY by a small random value
end while
if there were no intersections
return OUTSIDE
find the polygonB closest to POINT
find the DOT PRODUCT of closest poiygonl3 normal and RAY
find the DISTANCE to closest polygonB
if (DISTANCE == 0)
if (DOT PRODUCT > 0)
return SAME
else if (DOT PRODUCT < 0)
return OPPOSITE
else if (DOT PRODUCT > 0)
return INSIDE
else if (DOT PRODUCT < 0)
return OUTSIDE
Fig. 7.2: Polygon Classification Routine
166
7. Dallas, August 18-22 Volume 20, Number 4, 1986
We first use the edges of the subdivided polygons to calculate
the adjacency information for each object. Then begin at the first
polygon in the object structure that contains a vertex marked
UNKNOWN. The polygon cannot lie in the boundary of the other
object, since it contains at least one vertex that does not lie on the
boundary;the polygon classification routine determines if the
polygon is INSIDE or OUTSIDE the other object. The vertex is
marked appropriately, and all UNKNOWN vertices connected by
edges to this vertex are marked identically. Since all BOUNDARY
vertices were detected when the polygons were split, the vertices of
each object have been divided into connected regions: each con-
nected region is separated from other regions by boundary vertices,
and all the vertices in a connected region of one object lie on the
same side of the other object. Once the entire region has been
marked, another polygon with vertices marked UNKNOWN is
found. The operation is repeated until all polygons have been
checked and all vertices classified. Figure 8.1 shows pseudocode for
the region-marking routine.
Reglon-Marklng Routine:
calculate adjacency information for all vertices of objeetA
for each polygonA in objectA
if any vertices are marked UNKNOWN
call Polygon Classification Routine
to determine if polygonA INSIDE/OUTSIDE objectB
for each UNKNOWN vertex in polygonA
call Vertex Marking Routine
Vertex-Marklng Routine:
mark the specified UNKNOWN vertex as INSIDE/OUTSIDE
for each vertex.A" adjacent to vertexA
if vertexA" is marked UNKNOWN
call this routine recursivdy for vertex_A
Fig. 8.1: Region- and vertex-marklng routines
9. Selecting Polygons for Output
Once the two objects have been intersected and all vertices
have been classified as INSIDE, OUTSIDE, or BOUNDARY, the
polygons that comprise the resulting object must be selected. Fig-
ure 9.1 shows which polygons are in the set of polygons that
comprise the CSG combination of the two objects.
polygons in A
inside outside same opposite
A U B no yes yes no
A r"l B yes no yes no
A - B no yes no yes
polygons in B
inside outside same opposite
A U B no yes no no
A n B yes no no no.,,
A -- B yes no no no
Fig. 9,1: Selecting polygons for output
When a difference is performed, each polygonI3 inside objectA
must have the order of its vertices reversed, and its normal vector
must be inverted, since the interior of objectB becomes the exterior
of the resulting object. Faces classified as SAME or OPPOSITE in
one object exactly match faces in the other object. In the combi-
nation, at most one face needs to be added. We have chosen to
always take that face from objectA, so polygons in objectB
classified as SAME or OPPOSITE are never retained. Once the
appropriate polygons have been deleted from both objects, the
objects are combined to form the resulting object.
Most polygons are classified by examining the classifications
of their vertices. Polygons that have only boundary vertices are
classified by the ray-casting routine described earlier. Vertices
classified as INSIDE or OUTSIDE are deleted or kept according to
the table in Figure 9.1, although BOUNDARY vertices are never
deleted. Once the polygons have been deleted, the normals and
vertices reversed if necessary, and the object parts linked together,
the CSG operation is complete.
The pseudocode in Figure 9.2 for the polygon selection routine
makes use of the polygon classification routine described previously.
Figure 9.3 (after section 10) shows wireframe and raster renderings
of two cubes which have been unioned, intersected, and differenced.
(called by the union, intersection, and difference control routines)
(deletes polygons in objectA that are STATUS relative to objectB)
for each polygonA in objectA
for each vertexA in polygoRA
if the status of vertex_A_is not BOUNDARY
the status of the polygonA is the status of vertexA
if no status for polygonA, was found
determine status of polygomA_
using the polygon classification routine
if polygons of this status should be deleted for this operation
delete polygonA from objectA
for each vertexA in objectA
if vertices with this status should be deleted for this operation
delete vertexA
Fi$ 9.2: Se|ecting polygons for output
10. Conclusions
We have presented a straightforward yet robust algorithm
for performing CSG operations on polygonal objects. The algo-
rithm runs in O(V2+P 2) where V is the total number of vertices
and P the total number of polygons in both objects after subdivid-
ing. The time can probably bc reduced to O(VlogV+PlogP) with
suitable sorting of polygons and vertices.
Floating-point granularity must be considered when imple-
menting t,his Mgorithm. A CSG combination that strains many
commercial solid modellers combines two unit cubes, one rotated N
degrees first around the z-axis, then around the y-axis, and finally
around the z-axis [JOH86] Most commercial solid modelers fail
when 0.5degree < N < ldegree. Our implementation is successful
for N > O.ldegree. Rather than failing catastrophically on the
test case for smaller values of N, the algorithm detects a potential
error and prints an error message. The error is detected when the
signed distances from the vertices of one polygon to the plane of
another are calculated. A consistency check signals that the calcu-
lated distances are impossible.
There are several places where we attempt to correct, possible
floating point problems. All floating point comparisons are made
so that numbers that differ less than a small predefined value are
considered equal. For example, when a vertex is added to an
object, the list of existing vertices is checked for an equivalent ver-
tex using the approximate comparison above. If a match is found,
then the coordinates of the new vertex are set to be identical to
the coordinates of the vertex that was found. In addition, when
the coordinates of a new vertex that lles on the edge or face of a
polygon are calculated, the calculated value is projected onto the
edge or face to ensure that small errors will not propogate.
We are currently continuing work on this algorithm in several
directions. This algorithm divides polygons up more than is strictly
necessary..After several operations, what might have been a single
polygon in the resulting object may have instead become 10 or 20.
We would like to combine these coplanar faces to reduce the
167
8. S I G G R A P H '86
number of polygons in a resulting object. Also, when several CSG
operations must be performed to generate an object, the intermedi-
ate results are often not of interest. A modification of this algo-
rithm might subdivide all of the sub-objects at once, classifying
each polygon with respect to all of the other objects. If the entire
operation were performed at one time, a tremendous amount of
overhead from individual operations might be saved.
Figure 10.1 shows a spoon described in SCEFO using CSG.
The ray-traced image was rendered in 1300 CPU seconds on a VAX
11/780 running 4.2hsd UNIX. The polygonal image was rendered
using a Z-buffer algorithm and this CSG algorithm, taking 76
seconds on the same machine. Both images were rendered at a
resolution of 640 X 512 pixels, and the ray-traced image is
antialiased. In addition to making quiek polygonal renderings pos-
sible, this algorithm is used to generate wireframe representations
of objects for interactive modeling and animation previewing.
11. Acknowledgements
We would like to thank Trina Avery, Matthew Kaplan, Bar-
bara Meier, Joseph Pato, and Andries van Dam for reading early
versions of the paper. Thanks also goes to A_ndries van Dam and
the Brown University Computer Graphics Group for their assis-
tance and support.
12. References
FOL82 Foley, J. D. and A. van Dam, Fundamentals of Interactive
Computer Graphics, Addison-Wesley, 1982.
REQg0a
Requicha, A. A. G. and H. B. Voelcker, "Constructive Solid
Geometry," Production Automation Project Technical
Memorandum TM-25, April 1950.
REQg0b
Requicha, A. A. G. and H. B. Voelcker, "Mathematical
Foundations of Constructive Solid Geometry: General
Topology of Closed Regular Sets", Production Automation
Project Technical Memorandum TM-27a, November 1980.
REQ83 Requicha, A. A. G. and H. B. Voelcker, "Solid Modeling:
Current Status and Research Directions," IEEE Computer
Graphics and Applieatione, 3 (7), October 1983.
REQ85 Requicha, A. A. G. and H. B. Voelcker, "Boolean Opera-
tions in Solid Modeling: Boundary Evaluation and Merging
Algorithms," Proceedings of the 1EEE January 1985, pp.
30-44.
ROT82 Roth, Scott, "Ray Casting for Modeling Solids," Computer
Graphics and Image Proeegslng 18 (1982), pp. 109-144.
STR84 Strauss, P., M. Shantzis and D. Laidlaw, "SCEFO: A Stan-
dard Scene Format for Image Creation and Animation,"
Brown University Graphics Group Memo, Providence, R.I.,
1984, 32 pp.
TU-R84 Turner, James A., "A Set-Operation Algorithm for Two-
and Three-Dimensional Geometric Objects," Architecture
and Planning Research Laboratory, College of Architec-
ture, University of Michigan, Ann Arbor, MI, August, 1984.
JOH86 Johnson, Robert H., Solid Modeling: A State of the Art
Report (Second Edition), CAD/CIM Alert, Management
Roundtable, Inc., 1986.
168
10. m
,~. S I G G R A P H '86
(.) (b)
Figure 8.4: (a) Two cubes positioned so that they overlap
(b) The result of splitting the two objects against each other
(a) (b)
Figure 9.3: Wireframe and raster renderings of two cubes:
(a) union, (b) intersection, (c) difference
(a)
Figure 10.1: (a) ~vas ray-traced and (b) was rendered polygonally
(both images were generated from the same description)
(b)
170