{"action":"created","issue":{"url":"https://api.github.com/repos/opentk/opentk/issues/365","repository_url":"https://api.github.com/repos/opentk/opentk","labels_url":"https://api.github.com/repos/opentk/opentk/issues/365/labels{/name}","comments_url":"https://api.github.com/repos/opentk/opentk/issues/365/comments","events_url":"https://api.github.com/repos/opentk/opentk/issues/365/events","html_url":"https://github.com/opentk/opentk/issues/365","id":139485297,"number":365,"title":"Remove component-wise vector multiplication operators","user":{"login":"amulware","id":3987892,"avatar_url":"https://avatars.githubusercontent.com/u/3987892?v=3","gravatar_id":"","url":"https://api.github.com/users/amulware","html_url":"https://github.com/amulware","followers_url":"https://api.github.com/users/amulware/followers","following_url":"https://api.github.com/users/amulware/following{/other_user}","gists_url":"https://api.github.com/users/amulware/gists{/gist_id}","starred_url":"https://api.github.com/users/amulware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amulware/subscriptions","organizations_url":"https://api.github.com/users/amulware/orgs","repos_url":"https://api.github.com/users/amulware/repos","events_url":"https://api.github.com/users/amulware/events{/privacy}","received_events_url":"https://api.github.com/users/amulware/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/opentk/opentk/labels/math","name":"math","color":"006b75"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-03-09T06:11:34Z","updated_at":"2016-03-09T13:41:01Z","closed_at":null,"body":"PR #84 added component-wise multiplication operators for all vector types.\r\n\r\nAs mentioned in #79 this is not actually how `VectorN * VectorN` would be defined mathematically and may proof confusing.\r\n\r\nI personally am a strong proponent of type safety, and letting incorrect code fail at compile time.\r\n\r\nSince multiplication between two vectors could be interpreted in at least three different way (inner product, cross product, component-wise), I would argue that `VectorN * VectorN` should be a compile error, and that people should use named methods.\r\n\r\nI am not 100% on this, but I think I would prefer removing these operators (and make sure the different multiplication methods exist).\r\n\r\nThoughts?"},"comment":{"url":"https://api.github.com/repos/opentk/opentk/issues/comments/194300483","html_url":"https://github.com/opentk/opentk/issues/365#issuecomment-194300483","issue_url":"https://api.github.com/repos/opentk/opentk/issues/365","id":194300483,"user":{"login":"Phyyl","id":2528448,"avatar_url":"https://avatars.githubusercontent.com/u/2528448?v=3","gravatar_id":"","url":"https://api.github.com/users/Phyyl","html_url":"https://github.com/Phyyl","followers_url":"https://api.github.com/users/Phyyl/followers","following_url":"https://api.github.com/users/Phyyl/following{/other_user}","gists_url":"https://api.github.com/users/Phyyl/gists{/gist_id}","starred_url":"https://api.github.com/users/Phyyl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Phyyl/subscriptions","organizations_url":"https://api.github.com/users/Phyyl/orgs","repos_url":"https://api.github.com/users/Phyyl/repos","events_url":"https://api.github.com/users/Phyyl/events{/privacy}","received_events_url":"https://api.github.com/users/Phyyl/received_events","type":"User","site_admin":false},"created_at":"2016-03-09T13:41:01Z","updated_at":"2016-03-09T13:41:01Z","body":"I know this was brought in the other issue, but I really feel like this is important... GLSL has vector multiplication using the `*` operator, it will do component-wise multiplication. If I'm correct, in math, there's 3 operators for vectors: `*`, `•` and `x`. Right? I understand this can be a bit confusing when there's an operator but it doesn't say which one, but I also think it's clear that the star doesn't mean a cross or dot product. In addition, There's a nice comment over the operator, so anyone using it can see this is a component wise multiplication. I see it the same as a vector-to-float multiplication, except there's multiple components. Does that make sense..?\r\n\r\nAlso, what do you mean by \"letting incorrect code fail at compile time\"? Do you mean trial and error?"}}