일련의 점이 주어지면 어떻게 5 픽셀 떨어진 선에 대한 벡터를 계산할 수 있습니까? 예는 : 감안할 때 :N 너비 선 그리기?
\
\
\
어떻게 오른쪽에
\ \
\ \
\ \
것들은위한 벡터를 찾을 수 있습니다.
저는 플래시와 같은 프로그램이 두껍게 윤곽선을 그릴 수있는 방법을 알아 내려고하고 있습니다.
감사
일련의 점이 주어지면 어떻게 5 픽셀 떨어진 선에 대한 벡터를 계산할 수 있습니까? 예는 : 감안할 때 :N 너비 선 그리기?
\
\
\
어떻게 오른쪽에
\ \
\ \
\ \
것들은위한 벡터를 찾을 수 있습니다.
저는 플래시와 같은 프로그램이 두껍게 윤곽선을 그릴 수있는 방법을 알아 내려고하고 있습니다.
감사
두꺼운 선은 다각형입니다.
picture http://img39.imageshack.us/img39/863/linezi.png
시작 = 라인 시작 = 벡터 (X1, Y1)
끝 = 라인 끝 = 벡터 (X2, Y2)
DIR = 선 방향 = 끝 (의 지금은 앤티 엘리 어싱을 잊어 보자) - = 벡터 (X2-X1, Y2-Y1)
NDIR 시작 = 정규화 방향 DIR = 1.0 */길이 (DIR)
범인 = 수직 방향의 벡터 = (dir.x, -dir.y)에
nperp = 정규화 된 수직 = perp * 1.0/길이 (perp)
perpoffset = nperp * w 0.5
diroffset = NDIR * w 0.5
P0, P1을 P2, P3 = 다각형 점수
P0 = + perpoffset 시작 - diroffset
P1 = 시작 - perpoffset - diroffset을
단부 P2 = + + perpoffset diroffset
P3 = 엔드 - perpoffset + diroffset
P. 너 내가이 물건을 설명 할 마지막 사람이야. 이러한 것들은 직관적 인 수준에서 이해해야합니다.
직선으로 수행하는 방법은 원래 라인 (N)의 수선을 발견하는 방향으로 5 개 픽셀 공정을 한 후 그 지점에서 수직으로 직각을 찾는 것이다
| |
--+-----+---N
| |
| |
이 아닌 직선으로 그것을 할 방법은 많은 직선으로 근사하는 것입니다 또는 라인의 분석 표현이있는 경우, 것과 유사한 방식으로 분석 솔루션의 일종을 찾기 위해 직선의
수학 배경이 있어야합니다.
line (선형 방정식 및 선형 함수)을 이해하고 parallel은 무엇이며 기하학을 찾는 것이 좋습니다 transformations.
그 후 SigTerm의 답변을 이해하게 될 것입니다 ...
이 안된 의사 코드를 사용해보십시오 :
# Calculate the "Rise" and "run" (slope) of your input line, then
# call this function, which returns offsets of x- and y-intercept
# for the parallel line. Obviously the slope of the parallel line
# is already known: rise/run.
# returns (delta_x, delta_y) to be added to intercepts.
adjacent_parallel(rise, run, distance, other_side):
negate = other_side ? -1 : 1
if rise == 0:
# horizontal line; parallel is vertically away
return (0, negate * distance)
elif run == 0:
# vertical line; parallel is horizontally away
return (negate * distance, 0)
else:
# a perpendicular radius is - run/rise slope with length
# run^2 + rize^2 = length^2
nrml = sqrt(run*run + rise*rise)
return (negate * -1 * run/nrml, negate * rise/nrml)
SIGTERM 그의 멋진 그림에서 보듯이, 당신이 의도 한 라인의 양쪽에 줄을 얻고 싶은 것 : 그래서 거리를 thickness/2
에 전달하고 두 번 호출 , 한 번 other_side=true
으로하고, '추상 선'을 중심으로 두께를 그립니다.
벡터는 언제나 정의에 따라 멋진 직선입니다 ... 길이가 무척 길고 멋진 직선입니다. 또한, 어떤 방향으로 5 픽셀입니까? 오른쪽으로? 첫 번째 줄에 평범한가? –
이 숙제 또는 개인 프로젝트입니까? –
원래 일련의 선분이 단순한 수직 선이 아니라면 무엇을하고 싶습니까? – SamB