Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Смышляев Дмитрий #253

Open
wants to merge 26 commits into
base: master
Choose a base branch
from

Conversation

vafle228
Copy link

@vafle228 vafle228 commented Nov 13, 2024

@w1jtoo

Что на данный момент есть

  1. Рабочий алгоритм генерации облаков
  2. 2 варианта генераторов точек, для этих облаков
  3. Генератор изображений и сохранялка для них

- Добавил дискретную спираль
- Написал тесты на отрицательный шаг
- Написал тесты на штатную инициализацию
- Реализовал функционал тестов
- Написал тесты для обхода по спирали
- Реализовал функционал обхода по спирали согласно тестам
- Отрефакторил код
- Добавил тест на добавление прямоугольника
- Реализовал логику согласно тесту
- Это был Архимед
- И новая директория под ниъ
- Ввел спираль в полярных координатах
- Отрефакторил код
- Написал тест на обработку негативных значений
- Добавил обработку негативных значений
- Добавил тест на генерацию точек
- Реализовал генерацию
Copy link

@w1jtoo w1jtoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Подумай над требованиям по форме облака, как их можно отобразить в тестах

Если получится, можно отразить требование на плотность замощения прямоугольниками

var rectangleUpperLeft = rectangleCenter - rectangleSize / 2;
var rect = new Rectangle(rectangleUpperLeft, rectangleSize);

if (!placedRectangles.Any(r => r.IntersectsWith(rect)))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Скорее .All(!Intersects)

private List<Rectangle> placedRectangles;
private IPointGenerator<Point> pointGenerator;

public Point Center { get; private set; }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем нужен setter?

return true;
}

public void Reset()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Смущает, что у тебя спираль на самом деле не просто спираль. Она ещё знает что-то про размещения.

Думаю, что это не так плохо, если ты честно будешь позиционировать этот класс как спираль и что-то для передвижения . И этот метод, тогда, должен делать смещение (а не Reset).

}
}

[TestCaseSource(nameof(ThrowErrorOnNotPositiveNumberTestCases))]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут такое ощущение, что проще будет использовать TestCase обычный) Точка у тебя всегда (0, 0), а остальные параметры вполне себе можно положить в атрибут :)

var random = new Random();
var layouter = new SpiralCloudLayouter(new Point(0, 0));
var rectangleSizes = new Size[100];
for (var i = 0; i < rectangleSizes.Length; i++)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверки на пересечение ну очень сложная) Давай проще

namespace TagsCloudVisualizationTests.SpiralLayouter.PointGenerator;

[TestFixture]
public class PolarArchimedesSpiralTest
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кажется, у тебя есть тест на какой-то один случай, когда спираль круглая/квадратная.

Я думаю, что благодаря такому разделению ты можешь относительно просто проверить в этих тестах, что точки, которые генерирует спираль стремятся к окружности/квадрату.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants