from math import sqrt


def hex_coord(H=0.0):
	"""
	Функция возвращает координаты вершин правильного шестиугольника
	в зависимости от размера под ключ.

	Порядок возвращаемых координат вершин:
	С-В, Ю-В, Ю, Ю-З, С-З, С

	Входные параметры:
		H - размер шестигранника под ключ
	
	Выходные данные:
		points_coords - tuple координат вершин  
	"""
	points_coords = (
			( H / 2.0,  H / 2.0 / sqrt(3.0)),
			( H / 2.0, -H / 2.0 / sqrt(3.0)),
			( 0.0,     -H / sqrt(3.0)      ),
			(-H / 2.0, -H / 2.0 / sqrt(3.0)),
			(-H / 2.0,  H / 2.0 / sqrt(3.0)),
			( 0.0,      H / sqrt(3.0)      )
		)
	return points_coords


def hex_coord_flower(H=0.0):
	"""
	Функция возвращает координаты всех вершин для задачи "цветок"
	в зависимости от размера ТВС под ключ.

	Порядок возвращаемых координат вершин:
	С-В, Ю-В, Ю, Ю-З, С-З, С (для центральной ТВС), С-В, Ю-В, Ю, Ю-З, С-З, С (для перефирийных точек) 

	Входные параметры:
		H - размер шестигранника под ключ
	
	Выходные данные:
		points_coords - tuple координат вершин  
	"""
	points_coords = (
			( H / 2.0,  H / 2.0 / sqrt(3.0)),
			( H / 2.0, -H / 2.0 / sqrt(3.0)),
			( 0.0,     -H / sqrt(3.0)      ),
			(-H / 2.0, -H / 2.0 / sqrt(3.0)),
			(-H / 2.0,  H / 2.0 / sqrt(3.0)),
			( 0.0,      H / sqrt(3.0)      ),
			( H,        H / sqrt(3.0)      ),
			( H,       -H / sqrt(3.0)      ),
			( 0.0,     -2.0 * H / sqrt(3.0)),
			(-H,       -H / sqrt(3.0)      ),
			(-H,        H / sqrt(3.0)      ),
			( 0.0,      2.0 * H / sqrt(3.0))
		)
	return points_coords


if __name__ == '__main__':
	hex_coords = hex_coord_flower(H=23.6)
	for i, coord in enumerate(hex_coords):
		print(f'{i+1:3}', f'{coord[0]:4.4}', f'{coord[1]:4.4}')
