Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/NSchertler/GeneralizedMotorcycleGraph
23 June 2024, 01:59:38 UTC
  • Code
  • Branches (4)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/deploy-linux
    • refs/heads/deploy-osx
    • refs/heads/deploy-windows
    • refs/heads/master
    No releases to show
  • 505fc29
  • /
  • include
  • /
  • ParametrizationData.h
Raw File Download Save again
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:593bd9a2404e4c1ae8fd3d9dda679dd04a362404
origin badgedirectory badge
swh:1:dir:5e35bfc4d392295c5164cb832f2bf27465c5dab6
origin badgerevision badge
swh:1:rev:a34738fe34a051760b4042dc9d740231e511fec1
origin badgesnapshot badge
swh:1:snp:a981ea1718c19c4d9cde9d807965fd6d38bebcd2

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: a34738fe34a051760b4042dc9d740231e511fec1 authored by Nico Schertler on 31 October 2020, 07:04:57 UTC
Updated access token
Tip revision: a34738f
ParametrizationData.h
#pragma once

#include <vector>

#include "common.h"
#include "MotorcycleGraph.h"

struct ParametrizationData;

//Constraint of the form  multiplier * arcLength - oppositeArcLength == 0
struct ArcConstraintInfo
{
	ParametrizationData* optData;

	//The arc id that generated this constraint
	int arc;

	//Determines if this arc constraint is broken, i.e. it is a visible seam
	bool broken = false;

	//Determines parametric size multiplier between the two sides of the arc
	double multiplier;

	ArcConstraintInfo() { }

	ArcConstraintInfo(ParametrizationData* optData, int arc)
		: optData(optData), arc(arc)
	{ }
};

//Constraint of the form  Sum of left/top arc lengths == Sum of right/bottom arc lengths
struct FaceConstraintInfo
{
	enum ConstraintDirection
	{
		//Uses the sides 0 and 2 of the face
		LeftRight,

		//Uses the sides 1 and 3 of the face
		TopBottom,
	};

	ParametrizationData* optData;

	//The two sets of arc indices that are relevant for this constraint
	std::vector<int> arcs[2];

	//Determines for the two face sides if the side can grow, i.e. if there is an open boundary on the side
	bool canGrow[2];

	FaceConstraintInfo() { }

	//Instantiates the face constraint
	//face - specify the index of the face/patch for this constraint
	//direction - specify the side pair for this constraint
	FaceConstraintInfo(ParametrizationData* optData, int face, ConstraintDirection direction);
};

//Holds all relevant data for parametrization
struct ParametrizationData
{
	ParametrizationData(const std::vector<MotorcycleGraph::HalfArc>& halfarcs, const std::vector<TexturePatch>& patches, 
		std::vector<TextureCoordinatesStorage>& texCoords, const HEMesh& mesh, const MotorcycleGraph& graph)
		: halfarcs(halfarcs), patches(patches), texCoords(texCoords), mesh(&mesh), graph(&graph), 
		parametricHalfarcLengths(halfarcs.size(), -1), parametricHalfarcTargetLengths(halfarcs.size(), -1)
	{ }

	const HEMesh* mesh;
	const MotorcycleGraph* graph;

	const std::vector<MotorcycleGraph::HalfArc>& halfarcs;
	const std::vector<TexturePatch>& patches;
	std::vector<TextureCoordinatesStorage>& texCoords;

	//A weight for the geometric fitting energy for every arc
	std::vector<double> geometricArcFitWeight;

	std::vector<ArcConstraintInfo> arcConstraints;
	std::vector<FaceConstraintInfo> faceConstraints;

	std::vector<float> parametricHalfarcLengths, parametricHalfarcTargetLengths;

	//Deprecated - weight for the length fitting term for arc lengths
	double weightLengthFit;

	//Deprecated - weight for the unit multiplier term
	double weightArcMultipliers;
};

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API