· 17분 ·

골리앗이 메고 다닌 창은 어느정도 크기일까?

골리앗의 어깨에 걸린 ‘창'에 대한 성경의 설명 이다. 여기서 창은 찌르는 창이 아닌 던지는 투창(jevelin)이다. 읽다가 ‘무슨 투창이 자루가 베틀 채와 같은 걸까? 좀 과장심한건 아닌가?’ 라는 생각이 들었다.

골리앗이 멘 창의 앞부분, 이른바 ‘창 날'은 무게가 철 육백 세겔로 되어있다. 이에 대한 자료를 찾아보니, 대략 철 세겔 하나에 무게가 11.38g이라고 한다. 11.38g * 600은 6,828g, 대략 7kg이 나온다.

이정도면 얼마나 되는 무게인지 가늠하고 싶어 집에 저울에 ‘책'을 달아서 한번 쌓아보았다.

<골리앗의 창 날 무게(7kg) 만큼 저울에 달아 쌓아본 책>
<골리앗의 창 날 무게(7kg) 만큼 저울에 달아 쌓아본 책>

대략 저만큼 책이 쌓이더라. 나는 들고 있기도 버거운 무게다. 골리앗은 양 어께 사이, 그러니까 등에 창을 비껴서 저만한 무게의 ‘창 날'을 메고 다닌 것이다.

그러다 문듯 의문이 들었다. ‘이만큼의 창 날 무게에 맞는 창 자루를 끼우려면 얼마만한 자루를 끼워야 할까? 무게 중심을 맞춰야 던질 수 있는 것이 아닌가?’ 과연 골리앗의 창 날에 맞는 ‘창 자루'의 길이와 굵기가 궁금해서 이에 대해 조사해보기 시작하였다.

투창에 대하여 알아보려면 무엇을 조사해야 할까? 머리에서 떠오른 것은 ‘창던지기’ 경기였다.

육상 경기의 창던지기

출처: https://namu.wiki/w/창던지기
출처: https://namu.wiki/w/창던지기

창던지기에서 창을 잡는 모습을 보니 대략 창의 ‘중심'쪽을 잡는 모습이었다. 대략 무게주심이 창의 ‘가운데' 위치해 있다. ‘무게 중심’과 ‘손을 잡는 위치’의 관계는 대한 육상 연맹에서 설명하는 창던지기 문헌에서 자세히 설명하고 있다. ‘무게 중심(CM)'이 있으면, 그 뒤에 ‘압력 중심(CP)'이라고 해서 실제로 창을 던질 때는 이 ‘압력 중심'을 잡고 던진다고 설명을 하고 있다. 문헌의 설명에서는 ‘무게 중심'에서 약간 뒤에 ‘압력 중심'이 있다.

출처: http://www.kaaf.or.kr/DATA/FILEs/투척경기/창던지기.pdf
출처: http://www.kaaf.or.kr/DATA/FILEs/투척경기/창던지기.pdf

그렇다면 사진의 ‘창던지기'에서 처럼 무게중심이 창의 ‘가운데'로 오려면 과연 창 자루가 얼마나 길고 무거워야 할까? 이를 계산하기 위해 ‘수평잡기'의 원리를 이용하여 ‘무게 중심'을 계산하는 코드를 파이썬으로 작성하여 보았다.

수평잡기 원리와 코드의 적용에 대한 설명[클릭하여 펴보기]

‘수평 잡기' 원리는, 만약 무게 중심을 기준으로 왼쪽 1m 지점에 2kg의 추를 놓았을 때, 그 무게의 반인 1kg의 추를 가지고서도 반대편 거리의 두 배인 2m 지점에 두어 수평을 잡는 원리를 말한다.

이를 코드에 적용하기 위해, 각 물체(object)별로 ‘무게’와 ‘길이'를 할당하고 이를 왼쪽에서부터 쌓아간다. 그 뒤에 전체 길이를 기준으로 n으로 나눈 뒤, 각 구간별로 할당된 ‘무게'를 계산한다. 이 후 구간별로 나눈 ‘지점들'을 기준으로, 왼쪽 첫 번째 구간의 무게 * 1, 왼쪽 두 번째 구간의 무게 * 2… 를 구한 뒤 합하여 ‘왼쪽 무게'를 구하고, 반대편으로 오른쪽 첫 번째 구간의 무게 * 1 … 를 같은 식으로 구한 뒤 합해 ‘오른쪽 무게'를 구한다. 이 후 서로의 무게를 구간별로 비교하면서, 무게 차이가 가장 ‘적은' 구간에 ‘무게 중심'이 위치한 것으로 간주한다.

무게 중심을 계산하는 파이썬 코드[클릭하여 펴보기]
# center of gravity calculator


from pprint import pprint

class GravityObject:
	def __init__(self, name, weight, length):
		"""
		weight: float(g)
		length: float(mm)
		"""
		self.name = name
		self.weight = weight
		self.length = length
		self.coord = (0, length)


	def __repr__(self):
		return f"<'{self.name}'[{(self.weight)/1000}kg]{str(self.coord)}>"


class CogCalculator:
	def __init__(self, calculating_point=10):
		self.calculating_point = calculating_point
		self.combined_object = []
		self.calculated_objects = {}


	def add_object(self, gravity_object):
		"""
		basically add object from left to right
		"""

		left_coordination = self.length
		self.combined_object.append(gravity_object)
		right_coordination = self.length
		gravity_object.coord = (left_coordination, right_coordination)


	@property
	def length(self):
		return sum([o.length for o in self.combined_object])

	@property
	def weight(self):
		return sum([o.weight for o in self.combined_object])


	def find_cog(self):
		measure_distance = int(self.length / self.calculating_point)
		mesure_point = [i for i in range(0, int(self.length), measure_distance)]
		mesure_point.append(self.length)

		print(mesure_point)
		print()
		calculated_objects = {}
		for i in range(len(mesure_point[:-1])):
			calculated_objects[i] = {}
			coord = mesure_point[i], mesure_point[i+1]
			calculated_objects[i]['coordination'] = tuple(coord)
			calculated_objects[i]['weight'] = 0

			print(calculated_objects[i])
			for o in self.combined_object:		
				if o.coord[0] <= coord[0]:
					if coord[0] < o.coord[1] <= coord[1]:
						

						measure_length = o.coord[1] - coord[0]
						measure_weight = measure_length / o.length * o.weight
						calculated_objects[i]['weight'] += measure_weight
						coord = (o.coord[1], coord[1])
						print(o, "\t -> 오브젝트가 측정치 '왼쪽'에 걸터있는 상황:", measure_weight)

						# print("measure_weight:", measure_weight)

					elif coord[1] < o.coord[1]:
						
						measure_length = coord[1] - coord[0] # 측정치 거리
						measure_weight = measure_length / o.length * o.weight
						calculated_objects[i]['weight'] += measure_weight
						print(o, "\t -> 오브젝트안에 '측정치'가 있는 상황:", measure_weight)

				elif coord[0] < o.coord[0] < coord[1]:
					if o.coord[1] <= coord[1]:
						measure_weight = o.weight
						calculated_objects[i]['weight'] += measure_weight
						print(o, "\t -> 오브젝트가 측정치 '안에' 있는 상황:", measure_weight)

					elif coord[1] < o.coord[1]:
						measure_length = coord[1] - coord[0]
						measure_weight = measure_length / o.length * o.weight
						calculated_objects[i]['weight'] += measure_weight
						print(o, "\t -> 오브젝트가 측정치 '오른쪽'에 걸터있는 상황:", measure_weight)

			print('')
		pprint(calculated_objects)
		print(sum([o['weight'] for o in calculated_objects.values()]))
		print(self.weight)

		self.calculated_objects = calculated_objects

		calculated_objects_list = []
		for i in range(len(calculated_objects)):
			calculated_objects_list.append(dict(calculated_objects[i]))

		weight_gap = self.weight * self.calculating_point
		cog_idx = 0
		for i in range(1, len(calculated_objects)):
			coordination = calculated_objects_list[i]['coordination']

			center_point = (coordination[0] + coordination[1] ) / 2

			left_side = list(reversed([o['weight'] for o in calculated_objects_list[:i]]))
			right_side = [o['weight'] for o in calculated_objects_list[i:]]
			
			left_weight = 0
			right_weight = 0

			for j in range(len(left_side)):
				left_weight += left_side[j] * (j + 1)

			for j in range(len(right_side)):
				right_weight += right_side[j] * (j + 1)


			current_weight_gap = abs(left_weight - right_weight)
			
			
			if current_weight_gap < weight_gap:
				print('center_point', i, center_point, round(current_weight_gap))
				weight_gap = current_weight_gap
				cog_idx = i

		
		cog_coord = calculated_objects_list[cog_idx]['coordination']
		cog = int(sum(cog_coord) / 2)
		print('length:',self.length , 'weight:', str(self.weight) ,  'cog:', cog, round(cog / self.length , 2) )
			

창날 = GravityObject('창날', 7000, 500)
창대 = GravityObject('창대', 2700, 2500)


# In [8]: 2.5 / 3.6 * (10 / 2 * (4/5)) 신장 높이와 같은 '창'을 2바이 2(40*40) 기준으로 2.5미터 컷팅 하였을 때 무게
# Out[8]: 2.7777777777777777


cog = CogCalculator(calculating_point=1000)
cog.add_object(창날)
cog.add_object(창대)


print(cog.weight)
print(cog.length)

print(cog.combined_object)
cog.find_cog()

처음에는 무게중심을 창의 ‘가운데' 두기 위해 창의 길이와 무게를 계속 더하여 보았다. 그런데, 왠만큼 무게를 더해서는 대략 ‘가운데' 쪽으로 창의 무게중심을 위치 시키기가 쉽지 않았다. 창자루의 무게가 20kg 중반이 넘어서야 어느정도 무게중심이 ‘중간'에 가깝다 여겨지는 창을 구할 수 있었다. 무게 중심이 가운데 지점에 위치한 창을 구하기 위해서는 ‘창날'이 무거운 만큼 ‘창 자루'도 충분히 무거워야 하기 때문이다.

생각보다 필요 이상으로 창 자루가 무거워진다고 여겨지면서, 내가 생각한 ‘무게 중심'으로는 ‘골리앗의 창날’에 필요 만큼의 길이와 무게의 창 자루를 끼우기가 쉽지 않다고 여겨졌다. 어떻게 해야 골리앗의 창날을 던질 수 있는 창자루를 찾을 수 있을까, 고민하며 고대 문명들의 ‘투창’과 관련된 정보를 찾으면서 로마군의 투창(필룸)에서 중요한 흰트들을 발견하게 되었다.

출처: https://namu.wiki/w/필룸
출처: https://namu.wiki/w/필룸

육상 창던지기에서 잡는 창의 위치와는 다르게 로마군은 ‘창 날'에서 가까운 쪽을 잡고 창을 던지는 모습이다. 이를 통해 투창의 무게 중심은 그저 ‘잡을 수 있을 정도'만 되어도 가능하다는 생각을 하게 되었다.

이와 함께 중요한 참고가 되는 것이 고대 이집트 인의 투창이다. 아래 그림에 창의 길이와 사람의 신장을 자로 재어보았을 때 거의 유사하게 나온다. 옆으로 ‘비껴' 놨을 때 신장보다 줄어들기 때문에 아래의 그림에서 처럼 사람이 거동하더라도 불편하지 보이지 않는다. ‘골리앗의 투창'의 경우도 창이 ‘어깨와 어깨 사이'에 있다고 언급되어 있다. 이는 ‘등 뒤'에 걸어놓은 것에 대한 묘사이며, 이미지 처럼 ‘비껴서’ 놓았다면 골리앗 자신의 ‘신장' 길이의 창도 충분히 등 뒤에 걸고 거동을 할 수 있었을 것이다.

출처: https://en.wikipedia.org/wiki/Javelin
출처: https://en.wikipedia.org/wiki/Javelin

성경에서는 골리앗의 신장을 여섯규빗 한 뼘(삼상17:4)으로 언급한다. 1규빗은 약 45cm로 가정하였을 시, 골리앗의 신장은 2미터 70에 ‘한 뼘'을 더 한 것으로 여겨진다. ‘규빗'에 대한 수치는 문명, 국가마다 달라 1규빗에 50cm에 가까운 경우도 있다(이집트, 바벨론). 이점을 고려하면 골리앗의 신장은 2미터 80cm ~ 3미터 15cm 사이로 짐작이 된다. 대략 3미터 내외인 것이다.

골리앗의 신장을 3미터로 가정하고, 창의 길이를 동일하게 3미터로 가정하였다. 창 날은 7kg의 쇠덩어리를 길게 펴야 하니 적어도 50cm 는 넘을 것으로 가정하였다. 창 날의 경우 원 뿔 형태로 ‘둥굴고 뾰족하게' 가공할 수도 있겠지만, ‘칼날'과 같이 양 옆에 날이 선 형태로 가공되었을 가능성을 포함하였다. 적어도 ‘창 자루'에 끼워 던지려면 ‘날'보다는 무게중심이 뒤에 있어야 한다는 가정이다. 2미터 50cm 창 자루가 3kg 정도만 되더라도 50cm 길이의 7kg 창 날에 끼웠을 때 무게 중심이 창날 뒤로 15~20cm 정도에 생긴다. 이정도면 충분히 던질 수 있을 정도로 여겨진다.

이 ‘창 자루'를 성경은 ‘베틀 채'와 같다고 묘사를 하였다. 그렇다면 과연 ‘베틀 채'는 얼마나 두꺼웠을까?

출처: https://upload.wikimedia.org/wikipedia/commons/2/2e/VerticalLoom.JPG
출처: https://upload.wikimedia.org/wikipedia/commons/2/2e/VerticalLoom.JPG

고대의 베틀(ancient loom)에 대한 구조를 살펴보니, 위의 그림처럼 실에다 ‘굵은 나무'를 끼워서 만드는 형태가 자주 보였다. 가운데 끼우는 나무의 굵기를 보아하니 대략 투 바이 투 각목과 유사해 보였다. 투 바이 포(약 50 * 80mm) 3.6m 각목의 무게가 10kg이다. 이를 기준으로 2바이 투(40*40) 각목에 2.5m로 가공하였을 때 무게가 약 2.7kg이다. 이를 창 자루로 삼아 50cm 7kg 창 날에 끼웠을 때 무게중심이 창 날 뒤 16.7cm에 생긴다. 딱 ‘던질만한 창'이 나온다.

성경에서 골리앗의 ‘창 자루'가 ‘베틀 채' 같다는 표현은 정확한 표현이다.

참고문헌

투창

http://www.kaaf.or.kr/DATA/FILEs/투척경기/창던지기.pdf

https://en.wikipedia.org/wiki/Pilum

https://namu.wiki/w/필룸

도량(규빗)

http://www.koreascience.kr/article/CFKO199811920718268.pdf

http://www.duranno.com/bdictionary/result_vision_detail.asp?cts_id=17450

베틀 채와 각목

https://en.wikipedia.org/wiki/Warp-weighted_loom#/media/File:VerticalLoom.JPG

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dsrental15&logNo=221562053895

홈으로