Skip to content

e-yurov/ObjReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ObjReader

Общая информация

Чтобы получить объект класса Model, вам необходимо использовать один из двух методов:

  • ObjReader.read(File file) - принимает файл, из которого необходимо считать модель
  • ObjReader.read(String content) - принимает строку, из которой необходимо считать модель - например, содержимое файла или введенную вручную строку

Добавлен soft режим. Если он включен, то исключения типа "Слишком много аргументов" и "Неправильный токен" будут игнорироваться. Рекомендуется использовать его, потому что в моделях из учебного репозитория есть такие ситуации: vt 0.4612 0.4725 0.0000. Они выбрасывают исключения в обычном режиме. Soft режим по умолчанию включен в вышеупомянутых методах. Если вы хотите изменить этот параметр, то можете использовать соответствующие методы ObjReader.read(File file, boolean isSoft) и ObjReader.read(String content, boolean isSoft).

Эти методы выбрасывают исключения при возникновении ошибок считывания. Все исключения наследуются от одного класса ObjReaderException, который является RuntimeException. Это означает, что вам необязательно отлавливать их через try/catch. Среда разработки не будет ругаться, и программа в любом случае запустится. Тем не менее настоятельно рекомендуется использовать при создании модели конструкцию по типу:

//...
// some code

Model model;
try {
    model = ObjReader.read(new File("some/path"));
} catch (ObjReader exception) {
    // some exception handling
}

// more code
// ...

В противном случае, вся ваша программа будет прекращать работу из-за небольшой ошибки в файле модели.

При возникновении ошибок и непредвиденных ситуаций можете создавать вопросы в разделе Issues данного репозитория, либо сообщать напрямую мне.

Далее идет описание папок и классов. В пояснениях указано, что вам необходимо скопировать себе для корректной работы программы.

Папки и классы

  • math
    • Vector2f, Vector3f - классы-заготовки для работы с математикой, полностью скопированы из учебного репозитория. в них я переопределил методы equals и hashCode, но они используются только в тестах. Можете не копировать себе, если у вас есть собственная реализация.
  • model
    • Group - класс, представляющий собой группу полиномов (токен g). Необходимо скопировать себе.
    • Model, Polygon - классы, взятые из учебного репозитория. Необходимо скопировать себе все поля и методы, которые идут после строки с комментарием "Добавленные мной поля и методы".
  • objreader - необходимо полностью скопировать себе данную папку
    • exceptions - здесь хранятся исключения для разных ошибок. Они наследуются от одного родительского класса ObjReaderException.
    • FaceWord - класс, который представляет собой слово полигона и производит парсинг каждого отдельного слова.
    • ObjReader - основной класс, содержащий логику и производящий парсинг файла.
    • WordType - enum для определения, содержит ли полигон определенные компоненты (вершины, текстурные вершины, нормали).

Кроме того, есть тесты:

  • FaceWordTest - для тестирования класса FaceWord отдельно
  • ObjReaderFileParsingTest - для тестирования всего ObjReader с использованием считывания файлов
  • ObjReaderTest - для дополнительного тестирования некоторых методов ObjReader без считывания файлов

В методичке сказано, что тесты тоже желательно копировать себе. Если будете это делать, то вам также понадобятся тестовые файлы, которые лежат в директории src/test/resources/ObjFiles.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages