도로 및 철도 설계를 위한 수직 곡선 매개변수를 계산합니다. 교차점 및 저점, K 값, 고점/저점 등을 찾아 교량 및 저점 곡선에 대한 정보를 제공합니다.
수직 곡선 계산기는 토목 공학에서 필수적인 도구로, 엔지니어가 서로 다른 도로 경사 간의 부드러운 전환을 설계하는 데 도움을 줍니다. 수직 곡선은 도로 및 철도 설계에서 사용되는 포물선 곡선으로, 두 개의 서로 다른 경사 또는 기울기 사이의 점진적인 변화를 만들어 운전 조건을 편안하게 하고 적절한 배수를 보장합니다. 이 계산기는 수직 곡선 설계를 위해 필요한 복잡한 수학적 계산을 간소화하여 토목 엔지니어, 도로 설계자 및 건설 전문가가 곡선의 고도, 고점 및 저점, K 값과 같은 주요 매개변수를 신속하게 결정할 수 있도록 합니다.
고속도로, 지방 도로 또는 철도를 설계하든, 수직 곡선은 안전, 운전자의 편안함 및 적절한 폭우 관리에 중요합니다. 이 포괄적인 계산기는 곡선이 오르락내리락하는 경우(crest curves)와 도로가 내려갔다가 다시 올라가는 경우(sag curves) 모두를 처리하며, 교통 공학 프로젝트에서 적절한 수직 정렬 설계를 위해 필요한 모든 필수 정보를 제공합니다.
수직 곡선은 도로, 고속도로, 철도 및 기타 교통 인프라의 수직 정렬에 사용되는 포물선 곡선입니다. 이는 두 개의 서로 다른 기울기 또는 경사 사이의 부드러운 전환을 제공하여 경사가 만나는 지점에서 발생할 수 있는 갑작스러운 변화를 제거합니다. 이 부드러운 전환은 다음과 같은 이유로 필수적입니다:
수직 곡선은 일반적으로 포물선 형태로 되어 있습니다. 이는 포물선이 기울기의 변화를 일정하게 제공하여 차량과 승객이 경험하는 힘을 최소화하는 부드러운 전환을 생성하기 때문입니다.
토목 공학에서 사용되는 두 가지 주요 유형의 수직 곡선이 있습니다:
크레스트 곡선(Crest Curves): 초기 기울기가 최종 기울기보다 큰 경우(예: +3%에서 -2%로 이동) 발생합니다. 곡선은 언덕 또는 높은 지점을 형성합니다. 크레스트 곡선은 주로 정지 시야 거리 요구 사항에 따라 설계됩니다.
샐 곡선(Sag Curves): 초기 기울기가 최종 기울기보다 작은 경우(예: -2%에서 +3%로 이동) 발생합니다. 곡선은 계곡 또는 낮은 지점을 형성합니다. 샐 곡선은 일반적으로 헤드라이트 시야 거리 및 배수 고려 사항에 따라 설계됩니다.
수직 곡선을 완전히 정의하기 위해서는 여러 주요 매개변수를 설정해야 합니다:
수직 곡선의 임의의 지점에서의 고도는 다음의 이차 방정식을 사용하여 계산할 수 있습니다:
여기서:
K 값은 곡선의 평탄함을 측정하는 값으로 다음과 같이 계산됩니다:
여기서:
K 값이 높을수록 곡선이 평탄하다는 것을 나타냅니다. 설계 기준은 일반적으로 설계 속도 및 곡선 유형에 따라 최소 K 값을 지정합니다.
크레스트 곡선에서 이고 인 경우, 또는 샐 곡선에서 이고 인 경우, 곡선 내에 고점 또는 저점이 존재합니다. 이 지점의 스테이션은 다음과 같이 계산할 수 있습니다:
이 고점/저점에서의 고도는 기본 수직 곡선 방정식을 사용하여 계산됩니다.
PVI 스테이션과 고도를 주어진 경우, PVC 및 PVT를 다음과 같이 계산할 수 있습니다:
참고: 고도 공식에서 200으로 나누는 것은 기울기를 백분율에서 소수 형태로 변환하고 곡선의 반 길이를 고려하는 것입니다.
동일한 기울기 (g₁ = g₂): 초기 기울기와 최종 기울기가 동일한 경우, 수직 곡선이 필요하지 않습니다. K 값은 무한대가 되고 "곡선"은 실제로 직선이 됩니다.
매우 작은 기울기 차이: 기울기 간의 차이가 매우 작은 경우 K 값이 매우 커집니다. 이는 실용적인 구현을 위해 곡선 길이를 조정해야 할 수 있습니다.
제로 길이 곡선: 길이가 0인 수직 곡선은 수학적으로 유효하지 않으며 설계에서 피해야 합니다.
우리의 수직 곡선 계산기는 이러한 복잡한 계산을 간소화하여 수직 곡선 설계를 위한 모든 주요 매개변수를 신속하게 결정할 수 있도록 합니다. 사용 방법은 다음과 같습니다:
필요한 매개변수를 입력한 후, 계산기는 자동으로 다음을 계산하고 표시합니다:
곡선의 특정 스테이션에서의 고도를 쿼리할 수도 있습니다:
계산기는 수직 곡선의 시각적 표현을 제공하여 다음을 보여줍니다:
이 시각화는 곡선의 형태를 이해하고 설계 요구 사항을 충족하는지 확인하는 데 도움이 됩니다.
수직 곡선 계산은 여러 토목 공학 응용 프로그램에서 필수적입니다:
수직 곡선은 도로 설계의 기본 요소로, 안전하고 편안한 운전 조건을 보장합니다. 이들은 다음을 위해 사용됩니다:
예를 들어, 언덕 지형을 가로지르는 고속도로를 설계할 때, 엔지니어는 운전자가 도로에 장애물이 나타날 경우 안전하게 정지할 수 있도록 충분한 시야 거리를 확보하기 위해 수직 곡선을 신중하게 계산해야 합니다.
철도 공학에서 수직 곡선은 다음을 위해 중요합니다:
철도 수직 곡선은 일반적으로 도로보다 큰 K 값을 가지며, 이는 기차가 가파른 기울기 변화를 탐색할 수 있는 능력이 제한되기 때문입니다.
수직 곡선은 공항 활주로 설계에서 다음을 위해 사용됩니다:
건설 프로젝트를 위한 토지 개발 시, 수직 곡선은 다음을 도와줍니다:
수직 곡선은 다음을 설계하는 데 필수적입니다:
적절한 수직 곡선 설계는 물이 적절한 속도로 흐르도록 보장하고 침전물이나 침식을 방지합니다.
포물선 수직 곡선은 대부분의 토목 공학 응용 프로그램에서 표준이지만, 대안도 있습니다:
원형 수직 곡선: 일부 구형 설계 및 특정 국제 기준에서 사용됩니다. 이는 기울기의 변화를 다양하게 제공하지만 운전자가 느끼는 편안함이 떨어질 수 있습니다.
클로소이드 또는 나선형 곡선: 점진적으로 증가하는 변화를 원하는 특수 응용 프로그램에서 사용됩니다.
삼차 포물선: 더 복잡한 곡선 특성이 필요한 특수 상황에서 가끔 사용됩니다.
직선 근사: 매우 초기 설계 또는 매우 평탄한 지형에서 실제 수직 곡선 대신 간단한 직선 연결이 사용될 수 있습니다.
포물선 수직 곡선은 단순성, 일관된 변화율 및 잘 확립된 설계 절차로 인해 대부분의 응용 프로그램에서 표준으로 남아 있습니다.
수직 곡선 설계 방법론의 개발은 교통 공학과 함께 발전해 왔습니다:
초기 도로 건설에서 수직 정렬은 자연 지형에 의해 결정되었으며 최소한의 경량화가 이루어졌습니다. 차량이 더 빠르고 일반화됨에 따라 도로 설계에 대한 보다 과학적인 접근의 필요성이 분명해졌습니다.
20세기 초, 엔지니어들이 포물선 곡선의 장점을 인식하면서 포물선 수직 곡선이 표준이 되었습니다:
20세기 중반까지, 교통 기관들은 수직 곡선 설계에 대한 표준화된 접근 방식을 개발하기 시작했습니다:
컴퓨터의 출현으로 수직 곡선 설계는 더욱 정교해졌습니다:
오늘날 수직 곡선 설계는 운전자의 행동, 차량 동역학 및 환경 고려 사항에 대한 새로운 연구와 함께 계속 발전하고 있습니다.
K 값은 1%의 기울기 변화를 달성하는 데 필요한 수평 거리를 나타냅니다. 이는 수직 곡선의 길이를 초기 기울기와 최종 기울기의 절대 차이로 나누어 계산됩니다. K 값이 높을수록 더 평탄하고 점진적인 곡선을 나타냅니다. K 값은 일반적으로 크레스트 곡선 및 샐 곡선에 대한 정지 시야 거리 기준에 따라 설계 기준에서 지정됩니다.
곡선의 유형은 초기 기울기와 최종 기울기의 관계에 따라 다릅니다:
최소 K 값은 설계 속도, 곡선 유형 및 적용 가능한 설계 기준에 따라 다릅니다. 예를 들어, AASHTO는 크레스트 곡선에 대한 정지 시야 거리 및 샐 곡선에 대한 헤드라이트 시야 거리를 기반으로 한 최소 K 값의 표를 제공합니다. 높은 설계 속도는 안전성을 보장하기 위해 더 큰 K 값을 요구합니다.
고점(크레스트 곡선의 경우) 또는 저점(샐 곡선의 경우)은 곡선의 기울기가 0이 되는 지점에서 발생합니다. 이는 다음의 공식을 사용하여 계산할 수 있습니다:
고점/저점은 PVC와 PVT 사이에 이 스테이션이 존재할 때만 존재합니다.
초기 기울기와 최종 기울기가 동일한 경우, 수직 곡선이 필요하지 않습니다. 결과적으로 기울기가 일정한 직선이 됩니다. 이 경우 K 값은 이론적으로 무한대가 됩니다.
긴 수직 곡선은 기울기 간의 점진적인 전환을 제공하여 운전자의 편안함을 증가시킵니다. 짧은 수직 곡선은 수직 가속도의 갑작스러운 변화를 초래할 수 있으며, 이는 운전자가 느끼기에 불편할 수 있습니다. 적절한 곡선 길이는 설계 속도, 기울기 차이 및 현장 제약에 따라 다릅니다.
수직 곡선은 도로에서의 물 흐름의 방향과 속도에 영향을 미칩니다. 크레스트 곡선은 일반적으로 높은 지점에서 물을 멀리 보내어 배수를 촉진합니다. 샐 곡선은 저점에서 배수 문제를 일으킬 수 있으며, 종종 추가 배수 구조물(예: 인렛 또는 배수관)이 필요합니다.
대칭 수직 곡선에서는 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
고속도로 설계에서는 +3% 기울기에서 -2% 기울기로 전환하기 위한 수직 곡선이 필요합니다. PVI는 1000+00 스테이션에서 고도가 150.00 미터입니다. 설계 속도는 100 km/h로, 설계 기준에 따라 최소 K 값은 80이 요구됩니다.
1단계: 최소 곡선 길이 계산
귀하의 워크플로에 유용할 수 있는 더 많은 도구를 발견하세요.