Get it on Google Play


Wm뮤 :: 수학 Math

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
퇴직한 전자과 게임프로그래머
2020.3.48f1 , 2022.3.6f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2021. 1. 18. 16:35 Unity/C#

 

Xⁿ=Y 일때

n을 구하려면 log(Y) / log(X)                //로그
X를 구할려면 Sqrt(Y,n)                       //루트,제곱근, 여러개이면 거듭제곱근
Y를 구할려면 Pow(X,n) 혹은 Sqr(X,n)     //제곱,여러개이면 거듭제곱    

이상한 방법들

X를 구할때 보통을 sqrt를 써야하지만 인자를 1개만 받는 함수밖에 없을경우에
Pow(Y,1/n) //혹은 Sqr
이렇게 Pow를 써서 sqrt를 구할수도 있다
즉 Sqrt(x) = pow(x,1/2) 이다

 

Sqr계열

32의 5제곱근을 구할때

Sqr(32,1/5) //1은 고정숫자임

계산기 버전

 

 

 

 

log계열

 

//1024가 2의 몇승인지 구한다

Mathf.Log(1024,2)

다른버전

Mathf.Log(1024)/Mathf.Log(2)

계산기 버전

 

쓸모는 없지만

log(32)/5 = log(2)

이다

참고로 32는 2의 5제곱이다 즉

x^y=z일때

log(z)/y = log(x)

 

 

 

 

 

 

//npot를 최적의 2pot사이즈로 변경

wid=Mathf.Pow(2, Mathf.Round(Mathf.Log(texture.width, 2))));
hei=Mathf.Pow(2, Mathf.Round(Mathf.Log(texture.height, 2))));

/*
결과:
256->256
230->256
140->128
1031->1024
*/

 

 

 

 

원점에서의 거리

var len = sqrt(x*x + y*y);

 

 

x1,y1에서 x2,y2까지의 거리

 

 

 

 

 

 

 

Len과 dir을 이용하여 좌표를 구함

		public double d_set(double _Dir)
		{
			if(_Dir<0d)
			{
				_Dir=360d-((-_Dir)%360d);
			}
			if(_Dir>=360d)
			{
				return _Dir%360d;
			}
			return _Dir;
		}
		public double len_x(double _Len,double _Dir)
		{
			_Dir = d_set(_Dir);
			return _Len*Math.Cos(_Dir*Math.PI/180.0);
		}
        
		public double len_y(double _Len,double _Dir)
		{
			_Dir = d_set (_Dir);
			return _Len*Math.Sin(_Dir*Math.PI/180.0);
		}

 

 

pdir

x1,x2,y1,y2를 이용하여 각도를 구함

float2 center = 0.5;
float2 pos = i.uv.xy-center;
float2 dir  = ((atan2(pos.x,-pos.y)*2/3.14)/4+0.75)%1;

 

 

 

 

p1,p2,r,center를 이용하여 p3를 구하는 공식
챗GPT가 짜줬다

float2 FindIntersection(float2 p1, float2 p2, float R, float2 center)
{
    float2 dir = normalize(p2 - p1);
    float2 diff = p1 - center;

    // 원의 중심에서 선까지의 거리 d 계산
    float d = abs(diff.x * dir.y - diff.y * dir.x);

    // 만약 d가 R보다 크면 교점이 없음
    if (d >= R)
        return float2(0, 0);

    // L 계산: L = sqrt(R^2 - d^2)
    float L = sqrt(R * R - d * d);

    // 원의 중심에서 교점까지의 거리 h 계산: h = sqrt(R^2 - L^2)
    float h = sqrt(R * R - L * L);

    float2 midpoint = p1 + dot(center - p1, dir) * dir; // 선 위의 원의 중심에 수직인 점

    // 두 교점은 midpoint에서 ±L만큼 dir 방향으로 떨어져 있음
    float2 intersection1 = midpoint + L * dir;
    float2 intersection2 = midpoint - L * dir;

    // 이 예제에서는 두 교점 중 하나만 반환합니다.
    // 필요에 따라 두 교점 중 원하는 교점을 선택하여 반환하면 됩니다.
    return intersection1; 
}

 

'Unity > C#' 카테고리의 다른 글

코드 모음 사이트  (0) 2021.01.24
화면관련  (0) 2021.01.17
c# 기본 문법  (0) 2021.01.15
posted by 모카쨩

  • total
  • today
  • yesterday

Recent Post

저사양 유저용 블로그 진입