LPWSTR
- это полный указатель (LP
) на тип WSTR
, который является псевдонимом wchar_t
. Т.е. LPWSTR
- это wchar_t*
.LPWSTR process_path[MAX_PATH];
изначально выглядит как ошибка.wchar_t process_path[MAX_PATH]
- это для текущей ситуации правильный выбор. wchar_t
и сохранять результат в std::wstring
.cycle
не имеет предварительного объявления и определена после dfs
.cycle
перед объявлением dfs
или вообще перенеси определение cycle
перед dfs
.cycle
не объявлена в момент трансляции dfs
. параметр/аргумент
параметр/аргумент метода
std::byte
. И от new wchar_t[len]
стоит тоже отказаться в пользу std::vector<std::byte>
.ZeroMemory(data, len)
делает фиктивную работу - только время тратит, т.к. следом буфер перезаписывается из файла.ZeroMemory
зануляет только половину буфера, т.к. параметр длины задается в байтах, а буфер у тебя из двухбайтовых.std::vector<std::byte> ReadImage( const std::wstring_view file_path )
является более осмысленной. Слово Load - это загрузка, в отношении файлов применяется к загрузке готового формата данных. Read - простое чтение данных без разбора формата. Собственно формат у тебя не разбирается, поэтому и не Load. Результатом является блок байт с известной длиной, т.е. просто будет возвращено содержимое файла. file_path
однозначно говорит, откуда будет прочитан результат, константность говорит о том, что file_path
в функции используется как есть и, стало быть, функция является чистой.
Для постройки стрелки требуется всего два вектора-направления. Первый - это
arrow_length_direction = Normalize(finish - start)
, гдеfinish
- это конец отрезка, аstart
- это его начало.Точка длины стрелки считается так: , где
arrow_length
- это длина стрелки.Второй вектор-направление - это вектор одного плеча стрелки. Он строится как перпендикуляр направления стрелки: (в 2D-системах перпендикуляр - это перестановка координат единичного вектора). Этот вектор тоже будет нормализованным, т.к. вектор направления стрелки уже нормализован.
После этого, от точки длины стрелки откладываем две точки размаха стрелки: и , где
arrow_side_length
- это ширина плеча стрелки.Сама стрелка уже рисуется от
finish
,arrow_side1_position
иarrow_side2_position
.Этому механизму не важно, куда конкретно направлен отрезок. Механизм всегда оперирует направлением и перпендикуляром отрезка.