This commit is contained in:
2019-09-16 21:44:21 -04:00
parent f2f723aac8
commit 855736ee47
3 changed files with 18 additions and 19 deletions

View File

@@ -20,9 +20,9 @@ struct Mults {
[[nodiscard]] std::vector<int> relation(int a, int b) const;
[[nodiscard]] std::vector<std::vector<int>> relations(std::vector<int> gens) const;
[[nodiscard]] std::vector<std::vector<int>> relations(const std::vector<int>& gens) const;
[[nodiscard]] std::vector<std::vector<int>> irelations(Table *table, std::vector<int> gens) const;
[[nodiscard]] std::vector<std::vector<int>> irelations(const Table *table, const std::vector<int> &gens) const;
};
struct Table {
@@ -32,7 +32,7 @@ struct Table {
std::vector<std::vector<int>> fwd;
std::vector<std::vector<int>> rev;
explicit Table(std::vector<int> gens, Mults mults);
explicit Table(const std::vector<int> &gens, Mults mults);
[[nodiscard]] int gen_index(int gen) const;

View File

@@ -52,9 +52,9 @@ public:
u_view = glGetUniformLocation(program, "view");
u_color = glGetUniformLocation(program, "color");
const Mults &mults = schlafli({5,3,3});
// const glm::vec4 ident = center(mults);
const glm::vec4 ident = identity(mults, {1,});
const Mults &mults = schlafli({3, 4, 3});
const glm::vec4 ident = center(mults);
// const glm::vec4 ident = identity(mults, {10, .1, .1, .5});
std::cout << "Dimension: " << mults.num_gens << std::endl;
std::cout << "Generation times: " << std::endl;
@@ -168,8 +168,7 @@ public:
0.0, c2, 0.0, s2,
-s1, 0.0, c1, 0.0,
0.0, -s2, 0.0, c2
)
;
);
glUseProgram(program);
glUniformMatrix4fv(u_proj, 1, false, glm::value_ptr(proj));

View File

@@ -34,30 +34,30 @@ std::vector<int> Mults::relation(int a, int b) const {
return res;
}
std::vector<std::vector<int>> Mults::relations(std::vector<int> gens) const {
std::vector<std::vector<int>> Mults::relations(const std::vector<int> &gens) const {
std::vector<std::vector<int>> res{};
for (int a = 0; a < gens.size(); ++a) {
for (int b = a; b < gens.size(); ++b) {
for (int a = 0; a < (int) gens.size(); ++a) {
for (int b = a; b < (int) gens.size(); ++b) {
res.push_back(relation(gens[a], gens[b]));
}
}
return res;
}
std::vector<std::vector<int>> Mults::irelations(Table *table, std::vector<int> gens) const {
std::vector<std::vector<int>> Mults::irelations(const Table *table, const std::vector<int> &gens) const {
std::vector<std::vector<int>> rels = relations(gens);
std::vector<std::vector<int>> irels(rels.size());
for (int i = 0; i < rels.size(); ++i) {
for (int i = 0; i < (int) rels.size(); ++i) {
irels[i] = table->gen_index_each(rels[i]);
}
return irels;
}
Table::Table(const std::vector<int> gens, const Mults mults) : gens(gens), mults(mults) {
Table::Table(const std::vector<int> &gens, const Mults mults) : gens(gens), mults(mults) {
add_row();
gen_inds = std::vector<int>(gens[gens.size() - 1] + 1, -1);
for (int i = 0; i < gens.size(); i++) {
for (int i = 0; i <(int) gens.size(); i++) {
gen_inds[gens[i]] = i;
}
}
@@ -73,7 +73,7 @@ int Table::gen_index(int gen) const {
std::vector<int> Table::gen_index_each(std::vector<int> rel) const {
std::vector<int> res(rel.size(), 0);
for (int i = 0; i < rel.size(); ++i) {
for (int i = 0; i < (int)rel.size(); ++i) {
res[i] = gen_index(rel[i]);
}
return res;
@@ -87,11 +87,11 @@ void Table::add_row() {
int Table::add_coset() {
for (int from = 0; from < (int) size(); ++from) {
for (int gen : gens) {
if (get(from, gen) < 0) {
for (int igen = 0; igen < (int) gens.size(); igen++) {
if (iget(from, igen) < 0) {
int to = (int) size();
add_row();
set(from, gen, to);
iset(from, igen, to);
return to;
}
}