Kronecker product based fractals: Difference between revisions

m
Minor edit to C++ code
(C++ - added links to output images)
m (Minor edit to C++ code)
Line 314:
for (const auto& row : values) {
assert(row.size() <= columns_);
std::copy(begin(row), end(row), row_data(&elements_[columns_ * i++)]);
}
}
size_t rows() const { return rows_; }
size_t columns() const { return columns_; }
 
const scalar_type*& row_dataoperator()(size_t row, size_t column) const {
assert(row < rows_);
returnassert(column &elements_[row *< columns_]);
return &elements_[row * columns_ + column];
}
const scalar_type*& row_dataoperator()(size_t row), constsize_t column) {
assert(row < rows_);
return &elements_[row * columns_];
}
const scalar_type& at(size_t row, size_t column) const {
assert(column < columns_);
return row_data(row)elements_[row * columns_ + column];
}
scalar_type& at(size_t row, size_t column) {
assert(column < columns_);
return row_data(row)[column];
}
private:
Line 352 ⟶ 347:
size_t columns = acolumns * bcolumns;
matrix<scalar_type> c(rows, columns);
for (size_t i = 0; i < rows; ++i) {
auto* crow = c.row_data(i);
auto* arow = a.row_data(i/brows);
auto* brow = b.row_data(i % brows);
for (size_t j = 0; j < columns; ++j)
crow[c(i, j]) = arow[a(i/brows, j/bcolumns]) * brow[b(i % brows, j % bcolumns]);
}
return c;
}
Line 373 ⟶ 364:
 
for (size_t i = 0; i < height; ++i)
for (size_t j = 0; j < width; ++j)
std::copy_n(result.row_data(i), width, & imageData[i * bytesPerLine + j] = result(i, j);
 
QImage image(&imageData[0], width, height, bytesPerLine, QImage::Format_Indexed8);
1,777

edits