{"id":22177380,"url":"https://github.com/leisn/d3sharp","last_synced_at":"2025-03-24T18:24:35.992Z","repository":{"id":171854934,"uuid":"324901303","full_name":"leisn/D3Sharp","owner":"leisn","description":"D3Sharp is  implementation for D3.js on C# .Net Standard 2.1 . Currently available: D3Sharp.QuadTree/D3Sharp.Force","archived":false,"fork":false,"pushed_at":"2021-01-04T12:06:51.000Z","size":125,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T23:14:38.702Z","etag":null,"topics":["csharp","d3-force","d3-quadtree","d3js","netstandard21"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leisn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-28T03:20:42.000Z","updated_at":"2024-12-20T06:44:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"75fe5dcf-6ee3-4ce2-a557-cec239705709","html_url":"https://github.com/leisn/D3Sharp","commit_stats":null,"previous_names":["leisn/d3sharp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leisn%2FD3Sharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leisn%2FD3Sharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leisn%2FD3Sharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leisn%2FD3Sharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leisn","download_url":"https://codeload.github.com/leisn/D3Sharp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245326358,"owners_count":20597020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","d3-force","d3-quadtree","d3js","netstandard21"],"created_at":"2024-12-02T08:27:45.358Z","updated_at":"2025-03-24T18:24:35.954Z","avatar_url":"https://github.com/leisn.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# D3Sharp\nC# implementation for [D3.js](https://github.com/d3/d3)  on .Net Standard 2.1 .\n\n## Available\n\n* [D3Sharp.QuadTree](#d3sharpquadtree) for [d3-quadtree](https://github.com/d3/d3-quadtree).\n* [D3Sharp.Force](#d3sharpforce) for [d3-force](https://github.com/d3/d3-force).\n\n\n\n## Examples\n\n### D3Sharp.QuadTree\n\nDefinition:\n\n```c#\npublic class QuadTree\u003cTData, TNode\u003e\n    where TData : IQuadData\n    where TNode : QuadNode\u003cTData\u003e, new()\n```\n\n\n\nBy default use `QuadNode` create tree nodes:\n\n``` c#\n...\nusing D3Sharp.QuadTree;\n\npublic class CustomData : IQuadData\n{\n     public double X { get; set; } = double.NaN;\n     public double Y { get; set; } = double.NaN;\n\n     public string Location =\u003e X + \",\" + Y;\n     public int Id { get; set; }\n}\n    \nvar q = new QuadTree\u003cCustomData, QuadNode\u003cCustomData\u003e\u003e();\nq.Extent(0, 0, 2, 2).Add(new CustomData{X=3,Y=1,CustomField=\"Custom\"});\nConsole.WriteLine($\"Bounds = {q.Extents}\");\n//output: new double[,] { { 0, 0 }, { 4, 4 } }\nConsole.WriteLine($\"Node type = {q.Root.GetType().Name}\");\n//output: QuadNode`1\n```\n\nUse custom tree node:\n\n ``` c#\n...\n\npublic class CustomNode\u003cT\u003e : QuadNode\u003cT\u003e where T : CustomData\n{\n    public int Index { get; set; }\n\n    public override T Data\n    {\n        get =\u003e base.Data;\n        set\n        {\n            base.Data = value;\n            this.Index = value.Id;\n        }\n     }\n}\n\nvar datas = new List\u003cCustomData\u003e {\n    new CustomData{X=0,Y=0,Id=0},\n    new CustomData{X=0.9,Y=0.9,Id=1},\n};\n    \nvar q = new QuadTree\u003cCustomData, CustomNode\u003cCustomData\u003e\u003e(datas);\nConsole.WriteLine($\"Bounds = {q.Extents}\");\n//output: new double[,] { { 0, 0 }, { 1, 1 } }\nConsole.WriteLine($\"Node type = {q.Root.GetType().Name}\");\n//output: CustomNode`1\n ```\n\n### D3Sharp.Force\n\nDefinition:\n\n``` csharp\npublic class Link\npublic interface INode : QuadTree.IQuadData \npublic abstract class Force\u003cTNode\u003e : IDisposable where TNode : INode\npublic class Simulation\u003cTNode\u003e : IDisposable where TNode : INode      \n```\n\nSample:\n\n```csharp\n...\nusing D3Sharp.Force;\n...\n\nvar simulation = new Simulation\u003cNode\u003e(Nodes)\n    .AddForce(\"Links\", new ForceLink\u003cNode,Link\u003e(Links)\n    .AddForce(\"Centering\", new ForceCenter\u003cNode\u003e(300, 300).SetStrength(1))\n    .AddForce(\"Collision\", new ForceCollide\u003cNode\u003e(50, 0.3, 5)\n    .AddForce(\"Many-Body\", new ForceManyBody\u003cNode\u003e().SetStrength(-100);\nsimulation.Start();\n```\n\nScreenshot:\n\n![force-demo](https://github.com/leisn/D3Sharp/blob/master/Screenshot/force-demo.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleisn%2Fd3sharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleisn%2Fd3sharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleisn%2Fd3sharp/lists"}