목록2024/07 (17)
개발하는 리프터 꽃게맨입니다.
세 점의 결합아핀 결합을 이용하면 스칼라 계수의 범위에 따라 직선, 반직선, 선분 등 다양한 종류의 선을 만들 수 있었다.그렇다면 세 점을 결합하는 경우는 어떻게 될까?세 점 P1, P2, P3를 결합하는 경우 스칼라는 3개로 늘어나고 세 스칼라의 합은 1이 되어야 한다.위 식을 점에서 점을 빼는 수식으로 바꿔 전개하면 다음과 같다.여기서 각 괄호를 u, v, w 벡터로 치환하면 다음과 같이 벡터로 구성된 수식이 만들어 진다.앞서 살펴본 바와 같이 벡터 u, v가 서로 선형 독립의 관계라면 벡터 w는 2차원 벡터 공간 R²에 존재하는 모든 벡터를 생성할 수 있다.따라서 세 점의 아핀 결합은 평면의 모든 점을 만들어낸다. 여기서 스칼라 s, t의 값 범위를 [0, 1] 로 고정시켜보자.그러면 그러면 아래..
1. 벡터의 내적벡터의 내적 Dot Production 은 같은 차원의 두 벡터가 주어졌을 때,벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라를 만들어내는 연산이다.기호는 가운뎃점 ㆍ을 사용한다. 어떤 2차원 벡터 u (a, b), v (c, d) 가 있을 때1) 내적의 성질내적은 스칼라의 곱셈과 덧셈으로 구성되어 있으므로 교환법칙이 성립한다.결합 법칙은 성립하지 않는다.덧셈에 대해서 분배 법칙이 성립한다.서로 같은 벡터를 내적하면 벡터의 크기를 제곱한 결과가 나온다.내적의 성질은 모든 차원의 벡터에 대해서 동일하게 적용된다.2) 내적과 삼각함수와의 관계두 벡터 u, v가 있을 때, 두 벡터의 내적 값은 두 벡터 사잇각에 대한 cos 함수와 비례하는 특징을 가진다. 두 벡터 u, v의 사잇각을 세..
기존 이동 연산의 경우 행렬의 덧셈으로 구현했다.일반적인 행렬로는 이동에 대응하는 선형 변환을 구현할 수 없기 떄문이다. 해당 포스팅에서는 행렬 곱으로 이동 연산을 구현하는 방법에 대해서 알아본다.행렬 곱으로 이동 연산을 구현하기 위해서는 특별한 방법이 필요하다. 그것은 바로 아핀 공간을 사용하는 것이다.아핀 공간을 이용하면 모든 변환에 대해 선형 변환,행렬곱을 지원할 수 있다. 우리는 아핀 공간으로부터 가상 세계의 기반을 완성시킬 것이다.1. 이동 변환을 위한 아핀 공간2x2 정방 행렬의 곱셈으로는 2차원 평면에서의 이동을 구현할 수 없다.임의의 벡터 (x, y)를 (a, b) 만큼 이동시키는 것은(x+a, y+b) 와 같은 행렬 덧셈으로 구현할 수 있기 때문이다. 다음과 같은 정방행렬 A는 존재하지 ..
이전글https://powerclabman.tistory.com/118 [멀티스레드 프로그래밍] C++ 동시성 프로그래밍 개론참고사항C++ : Concurrency In Action (원서) 바탕으로 적은 글 입니다.해당 포스팅은 해당 저서의 번역보다는 번역 및 (제 기준으로) 이해하기 쉽도록 재구성한 부분이 다수 있습니다.주의해서 읽으시powerclabman.tistory.com 애플리케이션에 동시성을 사용하기로 결다. 특히, 다수의 스레드를 사용하기로 했다. 이제 어떻게 해야할까? 이 스레드들을 어떻게 시작하고, 완료되었는지 어떻게 확인하며, 어떻게 관리해야할까? C++ 표준 라이브러리는 주어진 스레드와 관련된 std::thread 객체를 통해 대부분의 스레드 관리 작업을 쉽게 수행할 수 있도록 한다..
most vexing parse 이하 성가신 파싱은 선언으로 해석할 수 있는 것은 선언으로 해석해야 한다.는 규칙이다.예를 들어 아래같은 코드를 보자. 여기서 MyClass a() 를 생각해보자.이 구문은 2가지로 해석될 여지가 있다. 1. 함수 선언2. 객체의 생성 (기본생성자 호출) 그런데 '성가신 파싱'에 의해 무조건 '선언'으로 해석된다. 분명 생성자는 호출했다고 생각했는데생성자가 호출이 안된 것을 볼 수 있다. 따라서 '성가신 파싱'을 회피하기 위해서 객체를 선언하고 싶다면 언제나 중괄호 초기화를 사용하는 것을 권장한다.