토목 공학 프로젝트를 위한 수직 곡선 계산기
도로 및 철도 설계를 위한 수직 곡선 매개변수를 계산합니다. 교차점 및 저점, K 값, 고점/저점 등을 찾아 교량 및 저점 곡선에 대한 정보를 제공합니다.
수직 곡선 계산기
입력 매개변수
Curve Parameters
PVI Information
결과
곡선 특성
주요 지점
정거장 쿼리
시각화
문서화
수직 곡선 계산기 - 토목 공학
소개
수직 곡선 계산기는 토목 공학에서 필수적인 도구로, 엔지니어가 서로 다른 도로 경사 간의 부드러운 전환을 설계하는 데 도움을 줍니다. 수직 곡선은 도로 및 철도 설계에서 사용되는 포물선 곡선으로, 두 개의 서로 다른 경사 또는 기울기 사이의 점진적인 변화를 만들어 운전 조건을 편안하게 하고 적절한 배수를 보장합니다. 이 계산기는 수직 곡선 설계를 위해 필요한 복잡한 수학적 계산을 간소화하여 토목 엔지니어, 도로 설계자 및 건설 전문가가 곡선의 고도, 고점 및 저점, K 값과 같은 주요 매개변수를 신속하게 결정할 수 있도록 합니다.
고속도로, 지방 도로 또는 철도를 설계하든, 수직 곡선은 안전, 운전자의 편안함 및 적절한 폭우 관리에 중요합니다. 이 포괄적인 계산기는 곡선이 오르락내리락하는 경우(crest curves)와 도로가 내려갔다가 다시 올라가는 경우(sag curves) 모두를 처리하며, 교통 공학 프로젝트에서 적절한 수직 정렬 설계를 위해 필요한 모든 필수 정보를 제공합니다.
수직 곡선 기초
수직 곡선이란 무엇인가?
수직 곡선은 도로, 고속도로, 철도 및 기타 교통 인프라의 수직 정렬에 사용되는 포물선 곡선입니다. 이는 두 개의 서로 다른 기울기 또는 경사 사이의 부드러운 전환을 제공하여 경사가 만나는 지점에서 발생할 수 있는 갑작스러운 변화를 제거합니다. 이 부드러운 전환은 다음과 같은 이유로 필수적입니다:
- 운전자의 편안함과 안전
- 운전자를 위한 적절한 시야 거리
- 차량 작동 효율성
- 효과적인 배수
- 도로의 미적 외관
수직 곡선은 일반적으로 포물선 형태로 되어 있습니다. 이는 포물선이 기울기의 변화를 일정하게 제공하여 차량과 승객이 경험하는 힘을 최소화하는 부드러운 전환을 생성하기 때문입니다.
수직 곡선의 종류
토목 공학에서 사용되는 두 가지 주요 유형의 수직 곡선이 있습니다:
-
크레스트 곡선(Crest Curves): 초기 기울기가 최종 기울기보다 큰 경우(예: +3%에서 -2%로 이동) 발생합니다. 곡선은 언덕 또는 높은 지점을 형성합니다. 크레스트 곡선은 주로 정지 시야 거리 요구 사항에 따라 설계됩니다.
-
샐 곡선(Sag Curves): 초기 기울기가 최종 기울기보다 작은 경우(예: -2%에서 +3%로 이동) 발생합니다. 곡선은 계곡 또는 낮은 지점을 형성합니다. 샐 곡선은 일반적으로 헤드라이트 시야 거리 및 배수 고려 사항에 따라 설계됩니다.
주요 수직 곡선 매개변수
수직 곡선을 완전히 정의하기 위해서는 여러 주요 매개변수를 설정해야 합니다:
- 초기 기울기 (g₁): 곡선에 들어가기 전 도로의 기울기로, 백분율로 표현됩니다.
- 최종 기울기 (g₂): 곡선을 나간 후 도로의 기울기로, 백분율로 표현됩니다.
- 곡선 길이 (L): 수직 곡선이 확장되는 수평 거리로, 일반적으로 미터 또는 피트로 측정됩니다.
- PVI (수직 교차점): 두 개의 접선 기울기가 곡선 없이 교차하는 이론적인 지점입니다.
- PVC (수직 곡선의 시작점): 수직 곡선의 시작 지점입니다.
- PVT (수직 접선의 끝점): 수직 곡선의 끝 지점입니다.
- K 값: 1%의 기울기 변화를 달성하는 데 필요한 수평 거리로, 곡선의 평탄함을 측정합니다.
수학적 공식
기본 수직 곡선 방정식
수직 곡선의 임의의 지점에서의 고도는 다음의 이차 방정식을 사용하여 계산할 수 있습니다:
여기서:
- = PVC로부터 거리 에서의 고도
- = PVC에서의 고도
- = 초기 기울기 (소수 형태)
- = PVC로부터의 거리
- = 기울기의 대수적 차이 ()
- = 수직 곡선의 길이
K 값 계산
K 값은 곡선의 평탄함을 측정하는 값으로 다음과 같이 계산됩니다:
여기서:
- = 수직 곡률의 비율
- = 수직 곡선의 길이
- = 초기 기울기 (백분율)
- = 최종 기울기 (백분율)
K 값이 높을수록 곡선이 평탄하다는 것을 나타냅니다. 설계 기준은 일반적으로 설계 속도 및 곡선 유형에 따라 최소 K 값을 지정합니다.
고점/저점 계산
크레스트 곡선에서 이고 인 경우, 또는 샐 곡선에서 이고 인 경우, 곡선 내에 고점 또는 저점이 존재합니다. 이 지점의 스테이션은 다음과 같이 계산할 수 있습니다:
이 고점/저점에서의 고도는 기본 수직 곡선 방정식을 사용하여 계산됩니다.
PVC 및 PVT 계산
PVI 스테이션과 고도를 주어진 경우, PVC 및 PVT를 다음과 같이 계산할 수 있습니다:
참고: 고도 공식에서 200으로 나누는 것은 기울기를 백분율에서 소수 형태로 변환하고 곡선의 반 길이를 고려하는 것입니다.
엣지 케이스
-
동일한 기울기 (g₁ = g₂): 초기 기울기와 최종 기울기가 동일한 경우, 수직 곡선이 필요하지 않습니다. K 값은 무한대가 되고 "곡선"은 실제로 직선이 됩니다.
-
매우 작은 기울기 차이: 기울기 간의 차이가 매우 작은 경우 K 값이 매우 커집니다. 이는 실용적인 구현을 위해 곡선 길이를 조정해야 할 수 있습니다.
-
제로 길이 곡선: 길이가 0인 수직 곡선은 수학적으로 유효하지 않으며 설계에서 피해야 합니다.
수직 곡선 계산기 사용 방법
우리의 수직 곡선 계산기는 이러한 복잡한 계산을 간소화하여 수직 곡선 설계를 위한 모든 주요 매개변수를 신속하게 결정할 수 있도록 합니다. 사용 방법은 다음과 같습니다:
1단계: 기본 곡선 매개변수 입력
- 초기 기울기 (g₁)를 백분율 형태로 입력합니다 (예: 2는 2% 오르막, -3은 3% 내리막).
- 최종 기울기 (g₂)를 백분율 형태로 입력합니다.
- 곡선 길이를 미터로 입력합니다.
- PVI 스테이션 (수직 교차점에서의 스테이션 값)을 지정합니다.
- PVI 고도를 미터로 입력합니다.
2단계: 결과 검토
필요한 매개변수를 입력한 후, 계산기는 자동으로 다음을 계산하고 표시합니다:
- 곡선 유형: 곡선이 크레스트인지, 샐인지, 아니면 둘 다 아닌지
- K 값: 수직 곡률의 비율
- PVC 스테이션 및 고도: 곡선의 시작점
- PVT 스테이션 및 고도: 곡선의 끝점
- 고점/저점: 해당되는 경우, 곡선에서의 가장 높은 또는 가장 낮은 지점의 스테이션 및 고도
3단계: 특정 스테이션 쿼리
곡선의 특정 스테이션에서의 고도를 쿼리할 수도 있습니다:
- 쿼리 스테이션 값을 입력합니다.
- 계산기는 해당 스테이션에서의 고도를 표시합니다.
- 스테이션이 곡선 한계를 초과하는 경우 계산기는 이를 나타냅니다.
4단계: 곡선 시각화
계산기는 수직 곡선의 시각적 표현을 제공하여 다음을 보여줍니다:
- 곡선 프로필
- 주요 지점 (PVC, PVI, PVT)
- 고점 또는 저점 (해당되는 경우)
- 접선 기울기
이 시각화는 곡선의 형태를 이해하고 설계 요구 사항을 충족하는지 확인하는 데 도움이 됩니다.
사용 사례 및 응용 프로그램
수직 곡선 계산은 여러 토목 공학 응용 프로그램에서 필수적입니다:
고속도로 및 도로 설계
수직 곡선은 도로 설계의 기본 요소로, 안전하고 편안한 운전 조건을 보장합니다. 이들은 다음을 위해 사용됩니다:
- 서로 다른 도로 경사 간의 부드러운 전환 생성
- 운전자를 위한 적절한 시야 거리 보장
- 배수를 적절히 제공하여 물의 축적 방지
- 다양한 도로 분류에 대한 설계 기준 및 사양 충족
예를 들어, 언덕 지형을 가로지르는 고속도로를 설계할 때, 엔지니어는 운전자가 도로에 장애물이 나타날 경우 안전하게 정지할 수 있도록 충분한 시야 거리를 확보하기 위해 수직 곡선을 신중하게 계산해야 합니다.
철도 설계
철도 공학에서 수직 곡선은 다음을 위해 중요합니다:
- 기차의 원활한 운행 보장
- 선로 및 기차 구성 요소의 마모 최소화
- 승객의 편안함 유지
- 설계 속도에서의 적절한 작동 가능성
철도 수직 곡선은 일반적으로 도로보다 큰 K 값을 가지며, 이는 기차가 가파른 기울기 변화를 탐색할 수 있는 능력이 제한되기 때문입니다.
공항 활주로 설계
수직 곡선은 공항 활주로 설계에서 다음을 위해 사용됩니다:
- 활주로 표면의 적절한 배수 보장
- 조종사를 위한 적절한 시야 거리 제공
- FAA 또는 국제 항공 당국 요구 사항 충족
- 이륙 및 착륙의 원활한 수행
토지 개발 및 부지 경량화
건설 프로젝트를 위한 토지 개발 시, 수직 곡선은 다음을 도와줍니다:
- 미학적으로 보기 좋은 지형 생성
- 적절한 폭우 관리 보장
- 토사 작업 수량 최소화
- ADA 요구 사항을 충족하는 접근 가능한 경로 제공
폭우 관리 시스템
수직 곡선은 다음을 설계하는 데 필수적입니다:
- 배수 채널
- 배수관
- 폭우 저류 시설
- 하수 시스템
적절한 수직 곡선 설계는 물이 적절한 속도로 흐르도록 보장하고 침전물이나 침식을 방지합니다.
포물선 수직 곡선의 대안
포물선 수직 곡선은 대부분의 토목 공학 응용 프로그램에서 표준이지만, 대안도 있습니다:
-
원형 수직 곡선: 일부 구형 설계 및 특정 국제 기준에서 사용됩니다. 이는 기울기의 변화를 다양하게 제공하지만 운전자가 느끼는 편안함이 떨어질 수 있습니다.
-
클로소이드 또는 나선형 곡선: 점진적으로 증가하는 변화를 원하는 특수 응용 프로그램에서 사용됩니다.
-
삼차 포물선: 더 복잡한 곡선 특성이 필요한 특수 상황에서 가끔 사용됩니다.
-
직선 근사: 매우 초기 설계 또는 매우 평탄한 지형에서 실제 수직 곡선 대신 간단한 직선 연결이 사용될 수 있습니다.
포물선 수직 곡선은 단순성, 일관된 변화율 및 잘 확립된 설계 절차로 인해 대부분의 응용 프로그램에서 표준으로 남아 있습니다.
수직 곡선 설계의 역사
수직 곡선 설계 방법론의 개발은 교통 공학과 함께 발전해 왔습니다:
초기 도로 설계 (1900년대 이전)
초기 도로 건설에서 수직 정렬은 자연 지형에 의해 결정되었으며 최소한의 경량화가 이루어졌습니다. 차량이 더 빠르고 일반화됨에 따라 도로 설계에 대한 보다 과학적인 접근의 필요성이 분명해졌습니다.
포물선 곡선의 개발 (1900년대 초)
20세기 초, 엔지니어들이 포물선 곡선의 장점을 인식하면서 포물선 수직 곡선이 표준이 되었습니다:
- 기울기의 변화율이 일정함
- 비교적 간단한 수학적 특성
- 편안함과 시공 가능성의 좋은 균형
표준화 (1900년대 중반)
20세기 중반까지, 교통 기관들은 수직 곡선 설계에 대한 표준화된 접근 방식을 개발하기 시작했습니다:
- AASHTO(미국 주 고속도로 및 교통 공학 협회)는 크레스트 곡선에 대한 최소 K 값에 대한 지침을 설정했습니다.
- 유사한 기준이 국제적으로 개발되었습니다.
- 시야 거리가 곡선 길이를 결정하는 주요 요소가 되었습니다.
현대의 계산 접근 방식 (1900년대 후반 ~ 현재)
컴퓨터의 출현으로 수직 곡선 설계는 더욱 정교해졌습니다:
- CAD(컴퓨터 지원 설계) 소프트웨어가 계산을 자동화했습니다.
- 3D 모델링을 통해 더 나은 시각화 및 수평 정렬과의 통합이 가능해졌습니다.
- 최적화 알고리즘이 가장 효율적인 수직 정렬을 찾는 데 도움을 주었습니다.
오늘날 수직 곡선 설계는 운전자의 행동, 차량 동역학 및 환경 고려 사항에 대한 새로운 연구와 함께 계속 발전하고 있습니다.
자주 묻는 질문
수직 곡선 설계에서 K 값이란 무엇인가요?
K 값은 1%의 기울기 변화를 달성하는 데 필요한 수평 거리를 나타냅니다. 이는 수직 곡선의 길이를 초기 기울기와 최종 기울기의 절대 차이로 나누어 계산됩니다. K 값이 높을수록 더 평탄하고 점진적인 곡선을 나타냅니다. K 값은 일반적으로 크레스트 곡선 및 샐 곡선에 대한 정지 시야 거리 기준에 따라 설계 기준에서 지정됩니다.
크레스트 곡선과 샐 곡선을 어떻게 결정하나요?
곡선의 유형은 초기 기울기와 최종 기울기의 관계에 따라 다릅니다:
- 초기 기울기가 최종 기울기보다 큰 경우(g₁ > g₂), 크레스트 곡선이 필요합니다.
- 초기 기울기가 최종 기울기보다 작은 경우(g₁ < g₂), 샐 곡선이 필요합니다.
- 초기 기울기와 최종 기울기가 동일한 경우(g₁ = g₂), 수직 곡선이 필요하지 않습니다.
설계에 사용할 최소 K 값은 얼마인가요?
최소 K 값은 설계 속도, 곡선 유형 및 적용 가능한 설계 기준에 따라 다릅니다. 예를 들어, AASHTO는 크레스트 곡선에 대한 정지 시야 거리 및 샐 곡선에 대한 헤드라이트 시야 거리를 기반으로 한 최소 K 값의 표를 제공합니다. 높은 설계 속도는 안전성을 보장하기 위해 더 큰 K 값을 요구합니다.
수직 곡선의 고점 또는 저점을 어떻게 계산하나요?
고점(크레스트 곡선의 경우) 또는 저점(샐 곡선의 경우)은 곡선의 기울기가 0이 되는 지점에서 발생합니다. 이는 다음의 공식을 사용하여 계산할 수 있습니다:
고점/저점은 PVC와 PVT 사이에 이 스테이션이 존재할 때만 존재합니다.
초기 기울기와 최종 기울기가 동일하면 어떻게 되나요?
초기 기울기와 최종 기울기가 동일한 경우, 수직 곡선이 필요하지 않습니다. 결과적으로 기울기가 일정한 직선이 됩니다. 이 경우 K 값은 이론적으로 무한대가 됩니다.
수직 곡선의 길이가 운전자의 편안함에 미치는 영향은 무엇인가요?
긴 수직 곡선은 기울기 간의 점진적인 전환을 제공하여 운전자의 편안함을 증가시킵니다. 짧은 수직 곡선은 수직 가속도의 갑작스러운 변화를 초래할 수 있으며, 이는 운전자가 느끼기에 불편할 수 있습니다. 적절한 곡선 길이는 설계 속도, 기울기 차이 및 현장 제약에 따라 다릅니다.
수직 곡선이 배수에 미치는 영향은 무엇인가요?
수직 곡선은 도로에서의 물 흐름의 방향과 속도에 영향을 미칩니다. 크레스트 곡선은 일반적으로 높은 지점에서 물을 멀리 보내어 배수를 촉진합니다. 샐 곡선은 저점에서 배수 문제를 일으킬 수 있으며, 종종 추가 배수 구조물(예: 인렛 또는 배수관)이 필요합니다.
PVI, PVC 및 PVT의 차이는 무엇인가요?
- PVI (수직 교차점): 두 개의 연장된 초기 및 최종 기울기 선이 교차하는 이론적인 지점입니다.
- PVC (수직 곡선의 시작점): 수직 곡선의 시작 지점입니다.
- PVT (수직 접선의 끝점): 수직 곡선의 끝 지점입니다.
대칭 수직 곡선에서는 PVC가 PVI의 곡선 길이의 절반만큼 PVI의 이전에 위치하고, PVT는 PVI의 곡선 길이의 절반만큼 이후에 위치합니다.
수직 곡선 계산의 정확도는 얼마나 되나요?
현대의 수직 곡선 계산은 올바르게 수행될 경우 매우 정확할 수 있습니다. 그러나 건설 허용 오차, 현장 조건 및 계산에서의 반올림으로 인해 작은 변동이 발생할 수 있습니다. 대부분의 실용적인 목적을 위해 고도를 센티미터 또는 0.01피트 단위로 계산하는 것이 충분합니다.
코드 예시
다음은 다양한 프로그래밍 언어에서 수직 곡선 매개변수를 계산하는 방법의 예입니다:
1' Excel VBA 함수: 수직 곡선의 임의의 지점에서 고도 계산
2Function VerticalCurveElevation(initialGrade, finalGrade, curveLength, pvcStation, pvcElevation, queryStation)
3 ' 기울기를 백분율에서 소수로 변환
4 Dim g1 As Double
5 Dim g2 As Double
6 g1 = initialGrade / 100
7 g2 = finalGrade / 100
8
9 ' 기울기의 대수적 차이 계산
10 Dim A As Double
11 A = g2 - g1
12
13 ' PVC로부터의 거리 계산
14 Dim x As Double
15 x = queryStation - pvcStation
16
17 ' 스테이션이 곡선 한계 내에 있는지 확인
18 If x < 0 Or x > curveLength Then
19 VerticalCurveElevation = "곡선 한계를 초과함"
20 Exit Function
21 End If
22
23 ' 수직 곡선 방정식을 사용하여 고도 계산
24 Dim elevation As Double
25 elevation = pvcElevation + g1 * x + (A * x * x) / (2 * curveLength)
26
27 VerticalCurveElevation = elevation
28End Function
29
30' K 값 계산 함수
31Function KValue(curveLength, initialGrade, finalGrade)
32 KValue = curveLength / Abs(finalGrade - initialGrade)
33End Function
34
1import math
2
3def calculate_k_value(curve_length, initial_grade, final_grade):
4 """수직 곡선의 K 값 계산."""
5 grade_change = abs(final_grade - initial_grade)
6 if grade_change < 0.0001: # 0으로 나누는 것 방지
7 return float('inf')
8 return curve_length / grade_change
9
10def calculate_curve_type(initial_grade, final_grade):
11 """곡선이 크레스트인지, 샐인지 또는 둘 다 아닌지 결정."""
12 if initial_grade > final_grade:
13 return "crest"
14 elif initial_grade < final_grade:
15 return "sag"
16 else:
17 return "neither"
18
19def calculate_elevation_at_station(station, initial_grade, final_grade,
20 pvi_station, pvi_elevation, curve_length):
21 """수직 곡선의 임의의 스테이션에서 고도 계산."""
22 # PVC 및 PVT 스테이션 계산
23 pvc_station = pvi_station - curve_length / 2
24 pvt_station = pvi_station + curve_length / 2
25
26 # 스테이션이 곡선 한계 내에 있는지 확인
27 if station < pvc_station or station > pvt_station:
28 return None # 곡선 한계를 초과함
29
30 # PVC 고도 계산
31 g1 = initial_grade / 100 # 소수로 변환
32 g2 = final_grade / 100 # 소수로 변환
33 pvc_elevation = pvi_elevation - (g1 * curve_length / 2)
34
35 # PVC로부터의 거리 계산
36 x = station - pvc_station
37
38 # 기울기의 대수적 차이 계산
39 A = g2 - g1
40
41 # 수직 곡선 방정식을 사용하여 고도 계산
42 elevation = pvc_elevation + g1 * x + (A * x * x) / (2 * curve_length)
43
44 return elevation
45
46def calculate_high_low_point(initial_grade, final_grade, pvi_station,
47 pvi_elevation, curve_length):
48 """수직 곡선의 고점 또는 저점 계산."""
49 g1 = initial_grade / 100
50 g2 = final_grade / 100
51
52 # 고점/저점은 기울기가 서로 반대일 때만 존재
53 if g1 * g2 >= 0 and g1 != 0:
54 return None
55
56 # PVC에서 고점/저점까지의 거리 계산
57 pvc_station = pvi_station - curve_length / 2
58 x = -g1 * curve_length / (g2 - g1)
59
60 # 고점/저점이 곡선 한계 내에 있는지 확인
61 if x < 0 or x > curve_length:
62 return None
63
64 # 고점/저점의 스테이션 계산
65 hl_station = pvc_station + x
66
67 # PVC 고도 계산
68 pvc_elevation = pvi_elevation - (g1 * curve_length / 2)
69
70 # 고점/저점에서의 고도 계산
71 A = g2 - g1
72 hl_elevation = pvc_elevation + g1 * x + (A * x * x) / (2 * curve_length)
73
74 return {"station": hl_station, "elevation": hl_elevation}
75
1/**
2 * 수직 곡선의 K 값 계산
3 * @param {number} curveLength - 수직 곡선의 길이 (미터)
4 * @param {number} initialGrade - 초기 기울기 (백분율)
5 * @param {number} finalGrade - 최종 기울기 (백분율)
6 * @returns {number} K 값
7 */
8function calculateKValue(curveLength, initialGrade, finalGrade) {
9 const gradeChange = Math.abs(finalGrade - initialGrade);
10 if (gradeChange < 0.0001) {
11 return Infinity; // 동일한 기울기일 경우
12 }
13 return curveLength / gradeChange;
14}
15
16/**
17 * 곡선의 유형 결정
18 * @param {number} initialGrade - 초기 기울기 (백분율)
19 * @param {number} finalGrade - 최종 기울기 (백분율)
20 * @returns {string} 곡선 유형: "crest", "sag" 또는 "neither"
21 */
22function determineCurveType(initialGrade, finalGrade) {
23 if (initialGrade > finalGrade) {
24 return "crest";
25 } else if (initialGrade < finalGrade) {
26 return "sag";
27 } else {
28 return "neither";
29 }
30}
31
32/**
33 * 수직 곡선의 임의의 스테이션에서 고도 계산
34 * @param {number} station - 쿼리 스테이션
35 * @param {number} initialGrade - 초기 기울기 (백분율)
36 * @param {number} finalGrade - 최종 기울기 (백분율)
37 * @param {number} pviStation - PVI 스테이션
38 * @param {number} pviElevation - PVI 고도 (미터)
39 * @param {number} curveLength - 수직 곡선의 길이 (미터)
40 * @returns {number|null} 스테이션에서의 고도 또는 곡선 한계를 초과할 경우 null
41 */
42function calculateElevationAtStation(
43 station,
44 initialGrade,
45 finalGrade,
46 pviStation,
47 pviElevation,
48 curveLength
49) {
50 // PVC 및 PVT 스테이션 계산
51 const pvcStation = pviStation - curveLength / 2;
52 const pvtStation = pviStation + curveLength / 2;
53
54 // 스테이션이 곡선 한계 내에 있는지 확인
55 if (station < pvcStation || station > pvtStation) {
56 return null; // 곡선 한계를 초과함
57 }
58
59 // 기울기를 소수로 변환
60 const g1 = initialGrade / 100;
61 const g2 = finalGrade / 100;
62
63 // PVC 고도 계산
64 const pvcElevation = pviElevation - (g1 * curveLength / 2);
65
66 // PVC로부터의 거리 계산
67 const x = station - pvcStation;
68
69 // 기울기의 대수적 차이 계산
70 const A = g2 - g1;
71
72 // 수직 곡선 방정식을 사용하여 고도 계산
73 const elevation = pvcElevation + g1 * x + (A * x * x) / (2 * curveLength);
74
75 return elevation;
76}
77
1public class VerticalCurveCalculator {
2 /**
3 * 수직 곡선의 K 값 계산
4 * @param curveLength 수직 곡선의 길이 (미터)
5 * @param initialGrade 초기 기울기 (백분율)
6 * @param finalGrade 최종 기울기 (백분율)
7 * @return K 값
8 */
9 public static double calculateKValue(double curveLength, double initialGrade, double finalGrade) {
10 double gradeChange = Math.abs(finalGrade - initialGrade);
11 if (gradeChange < 0.0001) {
12 return Double.POSITIVE_INFINITY; // 동일한 기울기일 경우
13 }
14 return curveLength / gradeChange;
15 }
16
17 /**
18 * 곡선의 유형 결정
19 * @param initialGrade 초기 기울기 (백분율)
20 * @param finalGrade 최종 기울기 (백분율)
21 * @return 곡선 유형: "crest", "sag" 또는 "neither"
22 */
23 public static String determineCurveType(double initialGrade, double finalGrade) {
24 if (initialGrade > finalGrade) {
25 return "crest";
26 } else if (initialGrade < finalGrade) {
27 return "sag";
28 } else {
29 return "neither";
30 }
31 }
32
33 /**
34 * PVC 스테이션 및 고도 계산
35 * @param pviStation PVI 스테이션
36 * @param pviElevation PVI 고도 (미터)
37 * @param initialGrade 초기 기울기 (백분율)
38 * @param curveLength 수직 곡선의 길이 (미터)
39 * @return PVC의 스테이션 및 고도를 포함하는 객체
40 */
41 public static Point calculatePVC(double pviStation, double pviElevation,
42 double initialGrade, double curveLength) {
43 double station = pviStation - curveLength / 2;
44 double elevation = pviElevation - (initialGrade / 100) * (curveLength / 2);
45 return new Point(station, elevation);
46 }
47
48 /**
49 * PVT 스테이션 및 고도 계산
50 * @param pviStation PVI 스테이션
51 * @param pviElevation PVI 고도 (미터)
52 * @param finalGrade 최종 기울기 (백분율)
53 * @param curveLength 수직 곡선의 길이 (미터)
54 * @return PVT의 스테이션 및 고도를 포함하는 객체
55 */
56 public static Point calculatePVT(double pviStation, double pviElevation,
57 double finalGrade, double curveLength) {
58 double station = pviStation + curveLength / 2;
59 double elevation = pviElevation + (finalGrade / 100) * (curveLength / 2);
60 return new Point(station, elevation);
61 }
62
63 /**
64 * 스테이션과 고도를 포함하는 포인트 클래스
65 */
66 public static class Point {
67 public final double station;
68 public final double elevation;
69
70 public Point(double station, double elevation) {
71 this.station = station;
72 this.elevation = elevation;
73 }
74 }
75}
76
실용적인 예시
예시 1: 고속도로 크레스트 곡선 설계
고속도로 설계에서는 +3% 기울기에서 -2% 기울기로 전환하기 위한 수직 곡선이 필요합니다. PVI는 1000+00 스테이션에서 고도가 150.00 미터입니다. 설계 속도는 100 km/h로, 설계 기준에 따라 최소 K 값은 80이 요구됩니다.
1단계: 최소 곡선 길이 계산
관련 도구
귀하의 워크플로에 유용할 수 있는 더 많은 도구를 발견하세요.