Plato said, “Let no one ignorant of geometry enter.”
“기하학을 모르는 자는 들어오지 말라.”
[webpage]Graphics Gems Repository
컴퓨터 그래픽 분야에서 광범위하게 사용되는 핵심적인 알고리즘과 그를 구현하는 코드가 공개된 사이트.
Graphics Gems 시리즈 책에 실려있는 모든 코드가 고스란히 정리되고 공개되어 있다.
해석프로그램인 SolarView에서 사용한 알고리즘 중 일부는 여기에서 제공한 것을 번역 또는 변환해서 사용하였다.
주소 : http://tog.acm.org/GraphicsGems/
내용 :
2D Geometry
2D Rendering
3D Geometry
3D Rendering
C Utilities
Curves and Surfaces
Frame Buffer Techniques
Image Processing
Matrix Techniques
Modeling and Transformations
Numerical and Programming Techniques
Radiosity
Ray Tracing
이 책은 알고리즘, 프로그램, 그래픽 프로그래머들에 필요한 수학적인 기술들을 담고 있다. 즉, 그래픽 프로그래머들이 프로그램을 작성할 때 도움을
주고자 만들어졌다. 이 책에 있는 기사들은 연구 논문이 아니며, 저널에 실린 것들과 컨퍼런스에서 나온 결과를 담고 있다. 수록된 내용들과
소스코드는 현재까지 모든 게임과 그래픽 전 분야에 걸쳐서 핵심적으로 사용되고 있는 것들이다. (교보문고 설명문 인용)
[webpage]Visualization ToolKit
위치 : http://www.vtk.org/
설명 :
컴퓨터 그래픽스에 관련한 공개 원시코드를 얻을 수 있는 사이트. 다음은 이 코드에 대한 사이트 내의 설명임.
The
Visualization ToolKit (VTK) is an open source, freely available software
system for 3D computer graphics, image processing, and visualization used
by thousands of researchers and developers around the world. VTK consists
of a C++ class library, and several interpreted interface layers including
Tcl/Tk, Java, and Python.
[webpage]Computational Geometry Algorithms Library
위치 : http://www.cgal.org/
내용 :
전산기하학에 필요한 알고리즘을 공개한 사이트. 아래는 사이트 내의 설명임
The goal of the CGAL Open Source Project is to provide
easy access to efficient and reliable geometric algorithms
in the form of a C++ library.
CGAL is used in various areas needing geometric computation, such as:
computer graphics, scientific visualization, computer aided design and
modeling, geographic information systems, molecular biology, medical imaging,
robotics and motion planning, mesh generation, numerical methods.
The Computational Geometry Algorithms Library
(CGAL), offers data
structures and algorithms like
triangulations (2D constrained triangulations and Delaunay triangulations in 2D and 3D),
Voronoi diagrams (for 2D and 3D points, 2D additively weighted Voronoi diagrams, and
segment Voronoi diagrams),
Boolean operations on polygons and
polyhedra,
arrangements of curves and their applications (2D and 3D envelopes, Minkowski sums),
mesh generation (2D Delaunay mesh generation and 3D surface mesh generation, skin surfaces),
geometry processing (surface mesh simplification,
subdivision and parameterization, as well as estimation of local differential properties,
and approximation of ridges and umbilics),
alpha shapes,
convex hull algorithms (in 2D, 3D and dD),
operations on polygons (straight skeleton and offset polygon),
search structures (kd trees for nearest neighbor search, and range and segment trees),
interpolation (natural neighbor interpolation and placement of streamlines),
shape analysis, fitting, and distances (smallest enclosing sphere of points or spheres, smallest enclosing ellipsoid of points,
principal component analysis), and
kinetic data structures.
[webpage]Comp.Graphics.Algorithms Frequently Asked Questions
유즈넷 Comp.Graphics.Algorithms에서 자주묻는질문(FAQ)를 정리해놓은 사이트
Table of
Contents
0. General Information
0.01:
Charter of comp.graphics.algorithms
0.02:
Are the postings to comp.graphics.algorithms archived?
0.03:
How can I get this FAQ?
0.04:
What are some must-have books on graphics algorithms?
0.05:
Are there any online references?
0.06:
Are there other graphics related FAQs?
0.07:
Where is all the source?
1. 2D Computations:
Points, Segments, Circles, Etc.
1.01:
How do I rotate a 2D point?
1.02:
How do I find the distance from a point to a line?
1.03:
How do I find intersections of 2 2D line segments?
1.04:
How do I generate a circle through three points?
1.05:
How can the smallest circle enclosing a set of points be
found?
1.06:
Where can I find graph layout algorithms?
2. 2D Polygon
Computations
2.01:
How do I find the area of a polygon?
2.02:
How can the centroid of a polygon be computed?
2.03:
How do I find if a point lies within a polygon?
2.04:
How do I find the intersection of two convex polygons?
2.05:
How do I do a hidden surface test (backface culling) with
2d points?
2.06:
How do I find a single point inside a simple polygon?
2.07:
How do I find the orientation of a simple polygon?
3. 2D Image/Pixel
Computations
3.01:
How do I rotate a bitmap?
3.02:
How do I display a 24 bit image in 8 bits?
3.03:
How do I fill the area of an arbitrary shape?
3.04:
How do I find the ‘edges’ in a bitmap?
3.05:
How do I enlarge/sharpen/fuzz a bitmap?
3.06:
How do I map a texture on to a shape?
3.07:
How do I detect a ‘corner’ in a collection of points?
3.08:
Where do I get source to display (raster font format)?
3.09:
What is morphing/how is it done?
3.10:
How do I quickly draw a filled triangle?
3.11:
D Noise functions and turbulence in Solid texturing.
3.12:
How do I generate realistic sythetic textures?
3.13:
How do I convert between color models (RGB, HLS, CMYK,
CIE etc)?
3.14:
How is “GIF” pronounced?
4. Curve Computations
4.01:
How do I generate a bezier curve that is parallel to
another bezier?
4.02:
How do I split a bezier at a specific value for t?
4.03:
How do I find a t value at a specific point on a bezier?
4.04:
How do I fit a bezier curve to a circle?
5. 3D computations
5.01:
How do I rotate a 3D point?
5.02:
What is ARCBALL and where is the source?
5.03:
How do I clip a polygon against a rectangle?
5.04:
How do I clip a polygon against another polygon?
5.05:
How do I find the intersection of a line and a plane?
5.06:
How do I determine the intersection between a ray and a
polygon?
5.07:
How do I determine the intersection between a ray and a
sphere?
5.08:
How do I find the intersection of a ray and a bezier
surface?
5.09:
How do I ray trace caustics?
5.10:
What is the marching cubes algorithm?
5.11:
What is the status of the patent on the “marching
cubes” algorithm?
5.12:
How do I do a hidden surface test (backface culling) with
3d points?
5.13:
Where can I find algorithms for 3D collision detection?
5.14:
How do I perform basic viewing in 3d?
5.15:
How do I optimize a 3D polygon mesh?
5.16:
How can I perform volume rendering?
5.17:
Where can I get the spline description of the famous
teapot etc.?
5.18:
How can the distance between two lines in space be
computed?
5.19:
How can I compute the volume of a polyhedron?
5.20:
How can I decompose a polyhedron into convex pieces?
5.21:
How can the circumsphere of a tetrahedron be computed?
5.22:
How do I determine if two triangles in 3D intersect?
6. Geometric Structures
and Mathematics
6.01:
Where can I get source for Voronoi/Delaunay
triangulation?
6.02:
Where do I get source for convex hull?
6.03:
Where do I get source for halfspace intersection?
6.04:
What are barycentric coordinates?
6.05:
How do I generate a random point inside a triangle?
6.06:
How do I evenly distribute N points on (tesselate) a
sphere?
6.07:
What are coordinates for the vertices of an icosohedron?
6.08:
How do I generate random points on the surface of a
sphere?
6.09:
What are Plücker coordinates?
7. Contributors
7.01:
How can you contribute to this FAQ?
7.02:
Contributors. Who made this all possible.
공동주택단지의 일조, 일사 및 조망분석 도구의 개발과 적용
제목 : 공동주택단지의 일조, 일사 및 조망분석 도구의 개발과 적용
Development and Application of Analytical Tools for Solar Access, Irradiance and
View on the Apartment Site
대한건축학회지회연합회논문집 제10권 제1호 통권 33호 pp.141~148 (총 8페이지)
2008년3월
Abstract
1. 서론
1.1 연구의 배경 및 목적
1.2 연구의 범위 및 방법
2. 분석도구 개발을 위한
예비적 고찰
2.1 태양궤적도
2.2 천공에 대한 형태 계수의 계산
2.3 시지각량의 계산
3. 분석도구의
개발과 검증
3.1 3차원 정보와 투영법 적용
3.2 분석도구의 검증
4. 분석도구의 적용
4.1 분석 대상
공동주택의 선정과 모델링
4.2 평가 결과 및 분석
5. 결론
참고문헌
Environmental issues have been taken into considerations in housing design for a
few decade. Pursuits for comfortable environment have been increased from
sunshine duration to views recently. This implies that evaluation tool consists
of various three-dimensional information. And it is devoted to support
decision-making at the design stage. Therefore it is important to present
environments visually which will be made by building geometry. In order to
evaluate solar access, irradiance, and views, various spherical projections were
also developed and applied to site analysis.
1091470451.pdf
형태계수 검증
투영법 버전과 벡터 버전 모두 형태계수에 대한 검증을 했다.
DXF를 읽어오는 모듈을 정리
과거 동적배열로 된 변수들을 Generic.List와 Generic.Dictionary로 변경하였다. 파일 읽는 시간이 놀랍게 줄었다.
리스트와 딕셔너리도 마치 동적배열처럼 사용할 수 있다.
1 2 3 4 |
'옛날 코드 Dim DXFEntities() As SV_DXFEntity ReDim Preserve DXFEntities(k) DXFEntities(k) = New SV_DXFEntity |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
'개체 클래스 Public Class SV_DXFEntity Private m_Type As String '자료명 Private m_CodeValue As Generic.Dictionary(Of Integer, String) ' Public Sub New() m_CodeValue = New Generic.Dictionary(Of Integer, String) End Sub Default Public Property CodeValue(ByVal groupCode As Integer) As String Get Return m_CodeValue(groupCode) End Get Set(ByVal value As String) m_CodeValue(groupCode) = value End Set End Property Public Property Type() As String Get Return m_Type End Get Set(ByVal value As String) m_Type = value End Set End Property Public Sub Add(ByVal myCode As Integer, ByVal myValue As String) If m_CodeValue.ContainsKey(myCode) Then Exit Sub m_CodeValue.Add(myCode, myValue) End Sub End Class |
1 2 |
'엔티티를 원소로하는 리스트 선언 Dim DXFEntities As Generic.List(Of SV_DXFEntity) |
구성 요소 아이콘이 도구상자에 표시되지 않음
Visual Basic 2005를 사용하다가 “구성 요소 아이콘이 도구 상자에 표시되지 않는” 황당한 경우을겪었다.
해결책은 http://msdn2.microsoft.com/ko-kr/library/ms171843.aspx에 있었다.
그 내용인즉은 다음과 같다.
Visual Studio에서 ToolboxBitmapAttribute를 사용하여 아이콘을 사용자 지정 구성 요소에 연결할 경우 비트맵은 자동 생성된 구성 요소의 도구 상자에 나타나지 않습니다. 비트맵을 보려면 도구 상자 항목 선택 대화 상자를 사용하여 컨트롤을 다시 로드합니다.
메뉴 -> 도구 -> 도구 상자 항목 선택 -> “다시 설정”을 누른다.
Structure와 Class
선택사항을 저장하는 구조체를 만들었는데, 원본 구조체의 값이 변경되지 않았다. 구조체를 전달할 때, ByRef를 사용했음에도 불구하고 원본 값이 변경되지 않았다. 그래서 클래스로 변경하니 원본의 값이 변경되었다.
구조체를 사용해서 인자를 전달하면, 원본에는 아무런 변화가 없다.